我是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());
答案 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);
}
);