Java 泛型使用类型不一致?
这是我的最后一节课Java 泛型使用类型不一致?,java,generics,Java,Generics,这是我的最后一节课 public class ActivitiesSQL implements Activities { ... @Override public boolean add( Activity e ) { throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
public class ActivitiesSQL implements Activities {
...
@Override
public boolean add( Activity e ) {
throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
}
@Override
public boolean remove( Object o ) {
throw new UnsupportedOperationException( "Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
}
}
public interface Activities extends Repository<Activity, ActivityId> {
...
}
public interface Repository<T, ID> extends Set<T> {
public abstract T findById( ID id );
}
公共类活动SQL实现活动{
...
@凌驾
公共布尔添加(活动e){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
@凌驾
公共布尔删除(对象o){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
}
公共接口活动扩展了存储库{
...
}
公共接口存储库扩展集{
公共摘要T findById(ID);
}
我试图理解的是,为什么生成的代码是
remove(Object…
和add(Activity…
)。为什么不remove(Activity…
?假设要扩展的集是java.util.Set
,那么remove()的参数
是类型对象
,因为它是在java.util.Set
中定义的
您可以在存储库中定义自己的remove(T)
,并根据需要委托给Set#remove()
,但这样就不再是@覆盖了
另请参见和,因为这是您的基本类型声明的。但是add
和remove
AFAIK来自同一个地方,所以它们不应该都以对象或活动结束吗?在我的实现类中,remove方法在哪里,您正在实现/覆盖、定义?我想我从来没有想到我认为这是我正在做的事情,但在场景中的定义不一致。