2013-06-12 44 views
-5

Hello!我試圖創建一個Java塊,它允許我根據從數組中調用的字符串調用類 - 但是,不幸的是,我似乎無法使它工作。如果有人可以幫助我將感激不盡,我包括我到目前爲止散列出來的代碼...在Java中使用數組時發生ClassNotFound異常

public class ProcrastinatorPanel extends JPanel { 

    String[] room = { 
      "Hallway", "Bathroom", "Study", 
      "Bedroom", "Dining Room", "Living Room", 
      "Kitchen", "Playroom", "Bathroom", "Garage" }; 

    int roomNumber = 0; 

    public ProcrastinatorPanel() { 

     Hallway.hallway = new Hallway(); 
     Class roomClass = Class.forName(room[roomNumber]); 
    } 
} 
+3

你有叫「走廊」的課嗎? – Thilo

+1

您沒有名爲'Hallway'的類,類加載器可以找到它(在這種情況下表示它不在默認包中)。使用完全限定名稱。 –

+0

這是什麼讓我困擾 - 名爲走廊的類存在,並在同一個源文件夾中... – user2479645

回答

2

Class.forName()方法來工作,你需要通過它代表一個完全的字符串合格的類名稱。例如。 "com.mycompany.main.Hallway"

你也可以嘗試製作一個Class es的數組而不是一串字符串。爲了讓你開始,表達式Hallway.class將評估到走廊類

也作爲職業african指出Hallway.hallway = new Hallway()是不會工作。代碼應爲Hallway hallway = new Hallway()Hallway是變量的類型,hallway是名稱。

+0

+1用於製作Class數組。 – Thilo

+0

我不認爲有可能將類放入數組中 - 您將該類型定義爲什麼? – user2479645

+0

@ user2479645這是一個很好的問題,我從不使用數組。只是我想象的類。我相信類將無法​​正常工作。你當然也可以聲明一組類(例如HashSet 或HashSet >)或ArrayList或其他東西 –

0

Class.forName()將需要全限定類名。

另外我沒有看到任何catch/throw的ClassNotFoundException異常。您提到的代碼是否完整?