为什么从接口执行方法将参数转换为Object(或扩展YourObject)?

时间:2015-08-01 09:42:07

标签: java generics types interface casting

我有一个界面

public interface GenericRepository<T extends GenericObject> {
    String add(T t);
}

我试图按预期实现它

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository{
@Override
public String add(T  t) {
  return null;
}

这不起作用。接口需要这样的实现。

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository{
@Override
public String add(GenericObject  genericObject) {
  return null
}

2 个答案:

答案 0 :(得分:2)

实现接口时,还需要传入T,该T取自实现(替换为类型)。

解决方案:

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository<T>{
@Override
public String add(T genericObject) {
  return null;
}

答案 1 :(得分:2)

  

为什么从接口执行方法将参数转换为Object(或扩展YourObject)?

没有。

  

接口需要这样的实现。

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository
@Override
public String add(T  t) {
  return null;
}

不,不。它期望这样:

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository<T>
@Override
public String add(T  t) {
  return null;
}
相关问题