Использование класса отражения Java для создания объекта и использования его в массиве - PullRequest
0 голосов
/ 18 сентября 2018

Я недавно начал использовать Java Reflection, но в настоящее время застрял на этом.

Итак, у меня есть что-то вроде этого:

Class<?> dogClass = Class.forName("com.example.dog");
Object dogObject = dogClass.newInstance();

Я хотел бы использовать вышеупомянутый объект в этом массиве:

List<Dog> dogList = new ArrayList();

Так что в обычном случае:

for(Dog d : dogList) {
....
.... 
}

Но когда я попытался использовать java-отражение, оно не сработало ..

for(dogObject d : dogList) {
....
.... 
}

Может кто-нибудь просветить меня, пожалуйста? Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Синтаксис цикла foreach похож на

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

, но в вашем коде вы используете Obj вместо T (Тип объекта).Это неправильный способ кодирования для каждого цикла.в вашем коде dogObject является экземпляром класса отражения dogClass , поэтому Java выдаст ошибку компиляции.

0 голосов
/ 18 сентября 2018

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) {
   ....         
}

(и вам нужно добавить попробовать / поймать, конечно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...