2016-06-21 3 views
1

私はパラメータとしてClass<T>をとるメソッドを使用しています。Tを使用するクラスを指定するT

私は、パラメータとして渡したいクラスも、それはpublic class MyObject<T>として宣言されていると私は、私は時々MyVarObject1MyVarObject2呼ばmMyVarに使う2つのクラスを持っているpublic T mMyVar;としてメンバーを宣言したT.を使用しています。

例:

private class MyObject<T> { 
    public T mMyVar; 
} 

private class MyVarObject1 { 
    // some variables 
} 

private class MyVarObject2 { 
    // some variables 
} 

具体的には、私が呼び出すてる方法はJacksonUtil方法fromJsonArrayです。

ここでは適切な構文がわかりません。 JacksonUtilは、JSONを解析することができますので、正確なモデル構造を知っている必要がありますが、私はこの行のために適切な構文を考え出すのトラブルを抱えている:

MyObject<MyVarObject1> result = JacksonUtil.fromJsonArray(jsonStr, MyObject<MyVarObject1>.class); 

私が持っているものが動作しません。私のIDEは2番目のパラメータを選択し、 "パラメータ化された型から選択できません"と言う。改造して使用している間

+1

'MyObjectには、私は' MyObjectに指定しない限り、あなたは私がやりたいのための方法はありません唯一 'MyObject.class' – EpicPandaForce

+0

を言っている、そのようなことが原因型消去には存在しません.class' 'JacksonUtil.fromJsonArray'(私のライブラリではないのでできません)の定義のパラメータとして Andrew

+0

ヒント:多くの知識を持つ洗練された人々の場合でも。新しい言語を使い始めるだけです。実際に使用するコンセプトを理解してください**。 Javaジェネリックは何とか高度なトピックです。あなたが求めているのは、あなたがそれを研究するのに多くの時間を費やさなかったことを意味します。 – GhostCat

答えて

0

私は同じ問題を抱えていた、これは私のソリューションです -

public class ResponseDS<T> { 
    public int s; 
    public String e; 
    public T d; 
} 

そして、あなたは、オブジェクトの配列が必要な場合は、以下の

public class ResponseDSs<T> { 
    public int s; 
    public String e; 
    public T[] d; 
} 

そして、私はそれを使用しています方法です改装のため -

Call<ResponseDS<UserDS>> userModelCall = ZivaUtils.getRetrofit().getUser(); 

私はあなたと同じ問題を抱えていると思う、私のソリューションはあなたを助けるでしょう:)

0

私はGsonのカスタムオブジェクトを解析するためにを実行します。私はあなたがジャクソンと同じようなものを見つけることができると思います。後で何かを見つけたら私の答えを編集します。

TypeTokenを使用すると、json文字列をカスタムオブジェクトに読み込むことができます。

Gson gson = new Gson(); 
//This is an example, you probably get this from your server as Json String 
MyObject<MyObject1> user = new MyObject<MyObject1>(); 
String myObjectAsString = gson.toJson(user); 
//then parse into your custom object 
MyObject other = gson.fromJson(myObjectAsString, new TypeToken<MyObject<MyObject1>>(){}.getType()); 
+0

ええ、 '新しいTypeToken >(){}。getType());'は、例えばGSONでリストを作る方法です。魔法です。 – EpicPandaForce

関連する問題