0

私はおおよそ次のコードを持っています: (SpiceRequest は RoboSpice プロジェクトのクラスです)

public class MyRequest extends SpiceRequest<SparseArray<MyService>> {
    // ...
    public MyRequest() {
        // This will not work
        super(SparseArray<MyService>.class);
    }

    public SparseArray<MyService> loadDataFromNetwork() {
        // ...
    }
}

ジェネリック型の Class オブジェクトを他のメソッドに渡すことはできますか? (些細なことで申し訳ありません、私はJavaの世界に慣れていません)

EDIT より詳細な説明

AsyncTaskネットワークからのウィッチロードデータとRoboSpiceプロジェクトからのリターンSparseArray<MyService>を置き換えようとしています。SpiceRequestWitch では、Tコンストラクター呼び出しで提供する必要があります。

  • MyServiceは Android の「サービス」ではありません

EDIT 2 小さな回避策、新しい中間クラスの追加によって解決された問題:

public class Result extends SparseArray<MyService> {}

そして渡す:Result.classスーパーSpiceRequestコンストラクターへ

4

2 に答える 2

1

いいえ、ジェネリック クラスのコードが実行時に型パラメーターのクラスを認識することはできません。型パラメーターは、バイト コードでは表示されません。これを実行時型消去と呼びます。

http://docs.oracle.com/javase/tutorial/java/generics/erasure.htmlから始まる Java チュートリアルで詳しく説明されています。

于 2013-11-13T09:10:59.943 に答える
0

番号。super() または任意のメソッドの型を知りたい場合は、getClass() を使用できます。

于 2013-11-13T09:19:57.403 に答える