2016-09-26 5 views
0

Как я могу реализовать с Java Reflection этот случай:Java Reflection - Инстанцирование Exception Интерфейс

RequestDocument req = RequestDocument.Factory.newInstance(); 

Я знаю, как я могу найти класс и создать его экземпляр, но в этом случае я не уверен, с .Factory. перед новым пример.

+1

'RequestDocument.Factory' - это просто имя класса, и вы хотите вызвать статический метод' newInstance' на нем. –

+0

Что вы подразумеваете под «реализовать с Java Reflection»? Что ты хочешь делать? – Tunaki

+0

@Tunaki Я думаю, что OP хочет перевести вышеуказанный код в отражающий вызов - 'Class.forName (" com.package.RequestDocument.Factory) .getMethod ("newInstance"). Invoke (null) '. –

ответ

0

Предполагая, что Factory является статический вложенный класс из RequestDocument и newInstance является общественный статический метод, эквивалентный код, использующий отражение затем:

Object req = Class.forName("my.package.RequestDocument$Factory") 
    .getMethod("newInstance") 
    .invoke(null); 

Пожалуйста, обратите внимание на $ используется чтобы указать, что это внутренний класс, и null используется как объект, на который мы хотим вызвать метод, потому что это статический вызов, поэтому экземпляр не нужен.

0

Правильный путь будет:

RequestDocument req = Factory.class.newInstance(); 

но, конечно: когда вы уже знаете, пакет класс/Factory; вы не должны использовать отражение. Вы просто позвоните

RequestDocument req = new RequestDocument.Factory(); 

вместо этого!