У меня есть String
, который имеет имя класса, говорящего "Ex"
(no .class
extension). Я хочу назначить его переменной Class
, например:
Class cls = (string).class
Как я могу это сделать?
У меня есть String
, который имеет имя класса, говорящего "Ex"
(no .class
extension). Я хочу назначить его переменной Class
, например:
Class cls = (string).class
Как я могу это сделать?
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();
eeh.. Class.forName(String classname)?
Вы можете получить ссылку класса любого класса во время выполнения через концепцию отражения Java.
Проверьте код ниже. Объяснение приведено ниже Вот один пример, который использует возвращенный класс для создания экземпляра AClass:
package com.xyzws;class AClass {
public AClass() {
System.out.println("AClass 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 output is
The first time calls forName:
static block in AClass
AClass Constructor
The second time calls forName:
//Calss has been loaded so there is not "static block in AClass" printing outThe second
Экзаменация ниже
Класс .ForName вызывается для получения объекта класса
Используя объект класса, мы создаем новый экземпляр класса.
Любые сомнения по поводу этого дайте мне знать
Не уверен, что вы просите, но... Class.forname, может быть?