2016-04-29 2 views
-1

Предположим, что имя класса является строкой.Создавать объект из имени класса в виде строки

String myClass = "com.whatever.MyClass"; 

Как я могу создать экземпляр этого класса с помощью отражения и есть объект типа MyClass и не Object, без использования кода, как это:

MyClass myObj = MyClass.class.cast(instance); 

В основном я хочу, чтобы преобразовать экземпляр Object в MyClass без использования MyClass в коде и просто зная имя класса как строку.

+0

Вы не можете. Чтобы присвоить ему ссылку типа «MyClass», вам нужно знать, что такое «MyClass» во время компиляции. –

+0

И единственный способ сделать это - http://stackoverflow.com/questions/2215843/using-reflection-in-java-to-create-a-new-instance-with-the-reference-variable-ty – Tunaki

+0

Вы могли бы посмотреть на заводскую модель, помещая их в какой-то контейнер с индексом строки и вызывая их. Вот как это делается на C++, но я не знаю о Java. –

ответ

0

Вы можете создать экземпляр класса и запустить его методы без необходимости импортировать класс в коде с помощью отражения:

Class clazz = Class.forName("com.whatever.MyClass"); 
Object instance = clazz.newInstance(); // or use the given instance 
clazz.getMethod("myMethod").invoke(instance); 
Смежные вопросы