Java T инициализировать - PullRequest
       22

Java T инициализировать

1 голос
/ 01 марта 2012

Как создать класс T?

Мне нужно привязать из некоторого XML-кода Windows Communication Foundation (WCF) объекта T.

Я могу сделать это без ошибок:

ArrayList<T> list = new ArrayList<T>();

Это моя функция:

public static <T> ArrayList<T> GetListFromXml(String url,String element)

Как получить: T obj =?

1 Ответ

3 голосов
/ 01 марта 2012

Это невозможно из-за стирания типа компилятора.Если у вас есть конкретный тип с конструктором по умолчанию на стороне вызывающего, может работать следующее:

public static <T> ArrayList<T> GetListFromXml(String url,String element, Class<? extends T> type) {
  T obj = type.newInstance();
  ...
}

Если вам нужно передать параметры конструктору, вы должны получить его из класса с помощью getConstructor(parameter type 1, ...)(вам нужно обработать исключения, не показанные здесь):

MyParamType1 param1 = ...;
MyParamType2 param2 = ...;
Constructor<T> cons = type.getConstructor(MyParamType1.class, MyParamType2.class);
T obj = const.newInstance(param1, param2);
...