我最近开始使用Java Reflection,但目前仍停留在这一点。
所以我有这样的东西:
Class<?> dogClass = Class.forName("com.example.dog");
Object dogObject = dogClass.newInstance();
我想在此arraylist中使用以上对象:
List<Dog> dogList = new ArrayList();
因此在正常情况下:
for(Dog d : dogList) {
....
....
}
但是当我尝试使用Java反射时,它不起作用。
for(dogObject d : dogList) {
....
....
}
有人可以启发我吗?谢谢。
答案 0 :(得分:2)
for(dogObject d : dogList)
是错误的。 dogObject
是对象而不是类型。将dogObject
添加到dogList
,然后像在第一个循环中那样将其循环:
Class<?> dogClass = Class.forName("com.example.Dog");
Dog dogObject = (Dog)dogClass.newInstance();
List<Dog> dogList = new ArrayList<Dog>();
dogList.add(dogObject);
for (Dog dog : dogList) {
....
}
(当然,您需要添加try / catch)
答案 1 :(得分:0)
foreach循环的语法如下所示
for(T Obj: Objects) {
....
....
}
但是在您的代码中,您使用的是 Obj 代替了 T (对象类型)。每个循环的编码方式是错误的。代码中的 dogObject 是反射类 dogClass 的实例,因此Java会抛出编译错误。