Создание объектов класса <?>, Где <?> Определяется как строка в ArrayList <String>- Java - PullRequest
0 голосов
/ 24 июня 2011

У меня есть массив String, которые соответствуют именам классов в одном из моих пакетов.

Например, допустим, у меня был ArrayList, который содержал три элемента: "A1", "A2"«A3».

Я хотел бы создать экземпляры этих классов, используя такой код:

    Class<?> objectToCreate = (Class<?>) MyStaticClass.class.getClassLoader().loadClass(objectToCreate);
    <?> objectCreated = objectToCreate.newInstance();

, чтобы после циклического перебора указанных строк кода у меня был один экземпляркласса А1, одного экземпляра класса А2 и одного экземпляра класса А3.

Кто-нибудь знает, возможно ли это?Я понимаю, что это территория "дай мне Google это для тебя", но я изо всех сил пытаюсь придумать существительное для запроса, которое дало бы мне ответ!

Ответы [ 2 ]

1 голос
/ 24 июня 2011

Вы можете просто получить класс, используя

Class<?> clazz = Class.forName(classname);

Вы, безусловно, можете использовать newInstance(), если ваши классы предоставляют открытый конструктор без аргументов.Кроме того, вы можете получить все доступные конструкторы и вызвать ctor с соответствующими параметрами.

1 голос
/ 24 июня 2011

Вам нужно, чтобы ? был чем-то отличным от подстановочного знака, то есть его нужно где-то определить.Ваши варианты на метод или класс.Я ожидаю, что метод будет работать, поэтому попробуйте обернуть его в метод, например, так:

public <T> T create(String name) {
   Class<T> objectToCreate = (Class<T>) MyStaticClass.class.getClassLoader().loadClass(objectToCreate);
   T objectCreated = objectToCreate.newInstance();
   return objectCreated;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...