2016-11-07 12 views
2

インターフェイスとして定義されている一般的なクラスを実装:私は、次のやろうとしている

BaseDrawerは次のように定義されて
public abstract class BaseActivity<S extends BaseDrawer> extends AppCompatActivity implements S{ 
... 
} 

public interface BaseDrawer { 
    boolean showWait(); 
    boolean hideWait(); 
} 

しかし、私に「インターフェイスがここで期待される」エラーになります「実装S」で。 Sがインタフェースを拡張する場合、手段Sもインタフェースであるため、このエラーの理由はありません。私は正しい?

+0

ジェネリックタイプから実装することはできません – Rogue

+0

インターフェイスとしてジェネリックを使用して到達したい目標は何ですか?明確ではない –

答えて

1

あなたは正しくありません。
このエラーが発生します。 Sはインターフェイスではなく、既にインターフェイスを実装したクラスである可能性があります。
また、Sがインターフェイスであると仮定すると、BaseDrawerで定義されたメソッドを除いて、そのインターフェイスにどのメソッドが追加されているかを知っていますか?どのようなメソッドが、抽象クラスではなく、BaseActivityの子クラスを実装しなければならないのか分かりますか?

0

ジェネリック定義の拡張は型階層とは異なります。型階層では、extendsはクラスextendsクラスでのみ使用でき、interfaceはextendsインターフェイスでも使用できますが、一般的な定義では、クラスまたはインタフェースを参照するためにextendsを使用することができます。

そして、ジェネリック型をクラス定義で使用することはできません。

関連する問題