2017-04-02 23 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

あなたはあなたのタグの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); 
      } 
    ); 
関連する問題