2012-03-01 159 views
1

如何创建T类?Java T初始化

我需要从对象T的一些Windows通讯基础(WCF)的XML绑定

我可以做到这一点没有错误:

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

这是我的函数:

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

如何获得:T obj =?

+0

您是否通过[Java泛型教程](http://docs.oracle.com/javase/tutorial/java/generics/)工作? – 2012-03-02 09:18:31

回答

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

'ArrayList ycList = GetListFromXml(url,element,YourClass.class);'。 [类文字](http://stackoverflow.com/questions/2160788/what-is-a-class-literal-in-java)。 – Mersenne 2012-03-01 15:30:19

+0

我可以向参数发送参数吗? – 2012-03-01 15:44:54

+0

@ user1194088您可以将该类型作为参数发送给需要参数的类。如果你写一个。 ArrayList不带一个类型。 – 2012-03-01 15:47:34