Получение типа класса из строки


у меня есть String который имеет имя класса say "Ex" (не

6 63

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 (String classname) ?

Не уверен, что вы спрашиваете, но... класса.forname, может быть?