2011-06-24 13 views
4

このクラスからどのように継承しますか?次のコードは壊れていますが、私は達成しようとしていることを示しています。Java - ジェネリックを受け入れるクラスから継承していますか?

バウンドの不一致:型TがタイプActivityInstrumentationTestCase2

public class MyClass<T> extends ActivityInstrumentationTestCase2<T> { 
    public MyClass (Class<T> clazz) { 
      super(clazz); 
    } 
} 
+2

なぜ壊れていますか?私はそれがコンパイルされ、正しく見えると思う。 –

+0

次のコンパイルエラーが発生します。バインドされた不一致 – aryaxt

+0

@aryaxt:完全なエラーメッセージを質問に追加できますか? –

答えて

5

ActivityInstrumentationTestCase2のクラス定義とは何であるの有界パラメータの有効なsubstitudeではないでしょうか?

class ActivityInstrumentationTestCase2<T extends SomeObject> { 
... 
} 

その場合、あなたのオブジェクトのパラメータは、そのスーパークラスのパラメータ内に滞在する必要があります。

はほとんどの場合、ActivityInstrumentationTestCase2は次のように定義されます。例えば

public class MyObject<T extends SomeObject> extends ActivityInstrumentationTestCase2<T> { 
... 
} 

また、パラメータが狭く作ることができます。 MySomeObjectはSomeObjectの拡張であれば、あなたも言うことができる:

public class MyObject<T extends MySomeObject> extends ActivityInstrumentationTestCase2<T> { 
... 
} 

編集に追加する: 私はちょうどthisを発見しました。私はあなたが同じものを使用していると仮定しているので、次のように定義する必要があります。

public class MyObject<T extends android.app.Activity> extends ActivityInstrumentationTestCase2<T> { 
... 
} 
+0

ありがとう、問題を修正しましたMyClass extends ActivityInstrumentationTestCase2 aryaxt