Получение типа класса из строки
у меня есть String
который имеет имя класса say "Ex"
(не
6 ответов:
Class<?> cls = Class.forName(className);
но ваш
className
должен быть полным, т. е.com.mycompany.MyClass
String clsName = "Ex"; // use fully qualified name Class cls = Class.forName(clsName); Object clsInstance = (Object) cls.newInstance();
Проверьте Java учебник след на отражение в http://java.sun.com/docs/books/tutorial/reflect/TOC.html для более подробной информации.
можно использовать
forName
методClass
:Class cls = Class.forName(clsName); Object obj = cls.newInstance();
Вы можете получить ссылку на класс любого класса во время выполнения с помощью рефлексии в Java.
Проверьте приведенный ниже код. Объяснение дается ниже
вот один пример, который использует возвращаемый класс для создания экземпляра AClass:
package com.xyzws; class AClass { public AClass() { System.out.println("AClass's Constructor"); } static { System.out.println("static block in AClass"); } } public class Program { public static void main(String[] args) { try { System.out.println("The first time calls forName:"); Class c = Class.forName("com.xyzws.AClass"); AClass a = (AClass)c.newInstance(); System.out.println("The second time calls forName:"); Class c1 = Class.forName("com.xyzws.AClass"); } catch (ClassNotFoundException e) { // ... } catch (InstantiationException e) { // ... } catch (IllegalAccessException e) { // ... } } }
печатный вывод
The first time calls forName: static block in AClass AClass's Constructor The second time calls forName:
класс уже загружен, поэтому нет второго "статического блока в AClass"
объяснение ниже
класса.ForName вызывается для получения объекта класса
С помощью объекта класса мы создаем новый экземпляр класса.
любые сомнения по этому поводу, дайте мне знать
Не уверен, что вы спрашиваете, но... класса.forname, может быть?