Java T初始化

时间:2012-03-01 15:03:33

标签: java wcf generics collections

如何创建T类?

我需要绑定来自对象T的一些Windows Communication Foundation(WCF)XML。

我可以毫无错误地执行此操作:

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

这是我的功能:

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

如何获得:T obj =?

1 个答案:

答案 0 :(得分:3)

由于编译器的type erasure,这是不可能的。如果您在调用方具有默认构造函数的具体类型,则以下操作可能有效:

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);