2011-11-20 105 views
0

只是一個很小的問題很簡單的問題。以下是我的編程2課程的編程任務的一部分。它側重於繼承和多個類。我已經回答了這個問題,但希望將這些類整合到一個主函數中,並實際構建一些內容,而不是僅僅提交最低限度的內容。動態命名一個類的實例?

我的問題是下面的代碼部分。用戶運行程序時,會出現一個對話框,詢問他要添加什麼(CD或電影,它們都是單獨的類)。

我想要的是用戶在程序運行時實際命名類的具體實例。因此,用戶將點擊Movie,例如,提示輸入名稱,然後在下一行使用電影類中的構造函數來創建一個帶有用戶輸入名稱的新實例類?這可能嗎?我嘗試使用一個簡單的字符串x = JOptionpane,然後命名類x,但它不起作用。我在想可能有一些方法會引用字符串?像contents.x可能?

在此先感謝!

import javax.swing.JOptionPane; 
public class Main 
{ 

    public static void main (String args []) 
    { 
    Object[] options = {"Movie", 
       "CD", 
       "Cancel"}; 
      int n = JOptionPane.showOptionDialog(null, "Would you like to add an item?","Product", 
         JOptionPane.YES_NO_CANCEL_OPTION, 
          JOptionPane.QUESTION_MESSAGE, 
           null, 
            options, 
             options[2]); 

    switch(n) 
    { 
    case 0: 
    String moviet = JOptionPane.showInputDialog("Title:"); 
    int movieID = Integer.parseInt(JOptionPane.showInputDialog("ID:")); 
    Movie moviett = new Movie(moviet, movieID); 


    } 


    } 

} 

回答

4

如果這不是太遠遠超出你的類的內容,你可以使用一個Map<String, Media> 存儲由運行時指定的字符串確定的情況。

Map<String, Media> instances = new HashMap<>(); 
// snip... 
String moviet = JOptionPane.showInputDialog("Title:"); 
int movieID = Integer.parseInt(JOptionPane.showInputDialog("ID:")); 
Movie moviett = new Movie(moviet, movieID); 
instances.put("some user-provided string", moviett); 

假設MovieCD二者延伸/實施Media

+1

GMTA,你擊敗了我! 1 + –

+3

我的乳頭高興地爆炸 –

+0

這有點凌駕於我的頭上,但我會研究它。感謝您的迅速回復。時間去Google搜索! – Eogcloud

2

Java不會以這種方式工作,事實上變量名稱遠不如您想象的那麼重要,並且幾乎不存在於編譯代碼中。相反,如何使用字符串設置Movie類的字段,可能是名爲「name」的字符串字段。如果你想檢索一個基於String的類實例,可以考慮使用一個Map,比如HashMap。

相關問題