泛型不一致使用Type?

时间:2014-02-03 21:20:00

标签: 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.
  }

  @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 );
}

我想要了解的是生成的代码为remove( Object...add( Activity ...)的原因。为什么不是remove( Activity ... )

1 个答案:

答案 0 :(得分:3)

假设您扩展的Setjava.util.Setremove()的参数为Object类型,因为这是java.util.Set中定义的方式。

您可以在remove(T)中定义自己的Repository,如果您愿意,可以委托给Set#remove(),但之后不再是@Override

另请参阅this answerthis answer