3

次のコード

public interface IGiveUp
{
    void surrender(List<Class> l);
}
public class GiveUp implements IGiveUp {

    @Override public void surrender(List<Class> l) {}
}

正常にコンパイルされます。しかし、未使用のジェネリック型パラメーターをインターフェイスに追加すると

public interface IGiveUp<X>
{
    void surrender(List<Class> l);
}

コンパイルに失敗します (javac 1.6.0_23)

IGiveUp.GiveUp is not abstract and does not override abstract method surrender(java.util.List)

実装でジェネリックを指定するとコンパイルされます

public class GiveUp implements IGiveUp<Object>

またはメソッドパラメーターをジェネリック型ではないリストにする

void surrender(List l);
4

1 に答える 1