2016-04-10 7 views
-1

コンパイルエラーです。「メソッドはそのスーパークラスのメソッドをオーバーライドしません」。ジェネリックを使用する要約からメソッドを一般的に実装する方法は?

public abstract class BaseClass<T> { 
    protected abstract void doThing(T thing); 
} 

public abstract class BaseBaseClass<T> extends BaseClass { 

    @Override 
    protected void doThing(T thing) { 
    System.out.println("hi"); 
    } 
} 
+0

エラーは正しいです。何も拡張されていないクラスに '@ Override'アノテーションがあるので、どのように' Override'を行うことができますか? –

+0

は投稿を更新しました。実際には基底クラスを拡張してエラーを返します – ab11

+0

拡張では生の型を使用しているため、エラーメッセージは引き続き正しいと思われます。 'extends BaseClass'は' extends BaseClass 'と同じではありません。最初のものは' extends BaseClassと同じです。 ' –

答えて

1

おそらくBaseBaseClassはBaseClassを拡張する必要がありますか?

もちろん、それはもはや抽象クラスである必要はありません。

+0

です。 '抽象'修飾子が使用されている限り。抽象クラスは必ずしも抽象メソッドを持つ必要はありません。 ;-) – Vampire

+0

それは基本クラスを拡張します、ちょうど私の擬似コードの誤植、私はポストを編集しました。ポストのコードは同じエラーを返します。 – ab11

+0

あなたはまだ誤字があるようです...私とあなたのものを比較してください...拡張は間違った場所にあります。 – billjamesdev

関連する問題