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

У меня есть a String который имеет название класса, говорят "Ex" (нет .class расширение). Я хочу присвоить его a Class переменная, как это:

Class cls = (string).class

Как я могу сделать это?

70
задан Vadim Kotov 23 August 2017 в 09:22
поделиться

6 ответов

Class<?> cls = Class.forName(className);

Но ваш className должен быть полностью определен, то есть com.mycompany.MyClass

154
ответ дан 24 November 2019 в 13:15
поделиться

Вы можете получить ссылку на класс любого класса во время выполнения через Концепция отражения 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» нет

Объяснение ниже.

Class.ForName вызывается для получения объекта класса

Используя объект класса, мы создаем новый экземпляр класса.

Если у меня возникнут сомнения, дайте мне знать

4
ответ дан 24 November 2019 в 13:15
поделиться
String clsName = "Ex";  // use fully qualified name
Class cls = Class.forName(clsName);
Object clsInstance = (Object) cls.newInstance();

Дополнительную информацию можно найти в учебном курсе Java по Reflection на http://java.sun.com/docs/books/tutorial/reflect/TOC.html .

43
ответ дан 24 November 2019 в 13:15
поделиться

Вы можете использовать метод forName класса Class :

Class cls = Class.forName(clsName);
Object obj = cls.newInstance();
8
ответ дан 24 November 2019 в 13:15
поделиться

эээ .. Class.forName (String classname)?

3
ответ дан 24 November 2019 в 13:15
поделиться

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

2
ответ дан 24 November 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: