Приведение объекта для класса, загруженного во время выполнения - PullRequest
0 голосов
/ 31 марта 2010

я загружаю класс, используя

Class.forName (имя класса, false, загрузчик)

После этого я создаю экземпляр, используя

klass.newInstance (); Он возвращает тип объекта. Я хочу привести его к определенному типу (т. Е. Экземпляр Classnamw). Я использовал обычное приведение, но зависает, потому что оно не разрешено во время выполнения. Как я могу привести его? Hellp

Ответы [ 2 ]

3 голосов
/ 31 марта 2010

Кастинг обычно используется для предоставления компилятору дополнительной информации. У вас нет этой информации во время компиляции, поэтому вы не можете передать ее компилятору.

Кроме того, цель приведения обычно заключается в том, что вы можете добраться до некоторого члена класса, который не был бы известен иначе - но если вы не знаете класс до времени выполнения, как вы можете узнать членов?

В некоторых случаях это было бы неплохо, но они довольно необычны. Что вы пытаетесь сделать с экземпляром после его создания? Если вы пытаетесь вызвать методы, о которых вы do знаете во время компиляции, вы можете сделать эти методы частью интерфейса и привести к interface ?

0 голосов
/ 31 марта 2010

Вы используете отражение, потому что вы не знаете (или не можете разрешить) класс, который будет загружен во время компиляции.

Таким образом, вы не можете разыграть класс.

Если нет интерфейса (или родительского класса), который вы можете разрешить во время компиляции (и, следовательно, приведения к нему), вы должны использовать отражение, чтобы сделать что-нибудь полезное с объектом.

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