2017-04-30 18 views
3

いくつかの奇妙な理由から、私はJava Utilからコレクションを実装したいと思います。removeとcontainsも含まれています。それで、私は自分自身を試してみたい。私の研究が起こったようJavaのコレクションの削除メソッドの一般的なタイプ

public class MyTest<E> implements Collection<E>{ 

    @Override 
    public <T> boolean remove(T t){ 
     return true; 
    } 

    @Override 
    public <T> boolean contains(T t){ 
     return true; 
    } 

} 

、私はこのコードは、最終的remove(Object) of type Collection<E> が、Javaのような消去は、単に代わりにそれを受け入れていないように思える持っていますが、求めて維持するつもりことを理解し:ここで私が見えるようにするコードは何ですかObjectを引数としてメソッドをオーバーライドします。誰もがそれを回避するために、とにかく知っているか、直接この

+1

あなたは 'Collection'のJavadocを見れば、あなたは'()を削除していることがわかります'は実際に' Object'型のパラメータで宣言されています。 'MyTest'に' Collection 'を実装させたい場合は、そのパラメータで' remove() 'を実装する必要があります。回避策はありません。あなたは 'remove()'をオーバーロードすることができ、 'E'型のパラメータを宣言することができます。 – Logan

答えて

3

とあなたは共分散を使用したりすることはできません引数が再定義することが、JavaのようCollectionのこの実装を持つことができないとCollectionはそのようなこれらの2つの方法が定義されている場合だから私は聞いてるのよ:

boolean remove(Object o); 
boolean contains(Object o); 

あなたがCollectionインターフェースを実装する場合は、これらのように、これらのメソッドを実装する必要がありますが指定されています

public class MyTest<E> implements Collection<E>{ 

    ... 
    @Override 
    public boolean remove(Object o){ 
     . . . 
    } 

    @Override 
    public boolean contains(Object o){ 
     . . . 
    } 
    ...  
} 
関連する問題