2017-04-02 84 views
-1

我是java面向對象編程的新手,需要幫助解決一個問題!如何根據用戶選擇顯示對象屬性?

我創建了多種DVD對象,並希望讓用戶選擇一個選項,然後顯示所選DVD的幾個屬性。不過,我不想爲所有可能的電影選項創建8種不同的情況。有沒有辦法用一個變量來調用一個與每個DVD ID相對應的變量(這是我分配的第一個變量)?

我試圖創建一個數組列表,但它給了我一個錯誤

任何幫助,非常感謝!

List<DVD> list = new ArrayList<DVD>(){ 
    DVD dvd1 = new DVD(1, "Movie 1"); 
    DVD dvd2 = new DVD(2, "Movie 2"); 
    DVD dvd3 = new DVD(3, "Movie 3"); 
    DVD dvd4 = new DVD(4, "Movie 4"); 
    DVD dvd5 = new DVD(5, "Movie 5"); 
    DVD dvd6 = new DVD(6, "Movie 6"); 
    DVD dvd7 = new DVD(7, "Movie 7"); 


     System.out.println("Enter your movie choice"); 
     int movieChoice = sc.nextInt(); 

     System.out.println(list.get(movieChoice).getDVDName()); 
+1

你有'javascript'作爲你的標籤之一。將其更改爲'java' – Howzieky

+1

你會得到什麼錯誤?另外,你在初始化列表的那一行有一個'{'。此外,你絕不會將任何DVD添加到列表中('list.add(dvd1)')。 – Leon

回答

0

使用反射來按名稱查找字段。假設wanted散列集包含需要處理的字段的名稱。

Set<String> wanted = new HashSet<>(); 
    Stream.of(DVD.class.getDeclaredFields()).filter(field -> wanted.contains(field.getName())).forEach(field -> 
      { 
       boolean accesBuffer = field.isAccessible(); 
       field.setAccessible(true); 
       //Do Something With the Field - get value, store in HashMap, etc. 
       field.setAccessible(accesBuffer); 
      } 
    );