2012-03-01 4 views
1

Tのクラスを作成するには?Java T initialize

私はエラーなしでこれを行うことができ、オブジェクトT.

のいくつかのWindows通信基盤(WCF)XMLからバインドする必要があり

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

これは私の関数である:

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

入手方法:T obj =?

+0

[Java Genericsチュートリアル](http://docs.oracle.com/javase/tutorial/java/generics/)で作業しましたか? –

答えて

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

+0

私はコントラクターにprametersを送ることができますか? –

+0

@ user1194088パラメータを取るクラスに型をパラメータとして送ることができます。あなたが1つ書くならば。 ArrayListは型をとらない。 –

関連する問題