如何根据用户选择显示对象属性?

时间:2017-04-02 18:26:36

标签: java arrays arraylist

我是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 个答案:

答案 0 :(得分: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);
            }
    );