使用Java反射类创建一个对象并在arraylist中使用它

问题描述 投票:0回答:2

我最近开始使用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) {
....
.... 
}

请问有人可以开导我吗?谢谢。

java arraylist reflection
2个回答
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)


0
投票

foreach循环的语法如下所示

for(T Obj: Objects) {
....
.... 
}

但是在你的代码中,你使用Obj代替T(对象类型)。这是每个循环编码的错误方式。在你的代码中dogObject是反射类dogClass的实例,所以java会抛出编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.