关于在Java

时间:2017-04-30 22:30:21

标签: java generics collections

出于一些奇怪的原因,我想从Java Util实现一个Collection并使用一般类型的一切,包括remove和contains,为了向后兼容的原因,他们根本没有这样做,所以我想尝试我。这是我想要的代码:

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 个答案:

答案 0 :(得分:3)

你不能像在Java中那样实现Collection,参数不能使用协方差或重新定义,Collection定义这两种方法:

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){
       . . .
    }
     ...     
}