实现通用接口

时间:2015-07-20 12:24:43

标签: java generics

我有一个通用接口,我想以通用的方式实现这个接口:

public interface BaseBean<T> {

    public T create(T t);
    public T read(Long id);
    public T update(T t);
    public void delete(T t);

}

由于某种原因,我也不能使实现通用。 Eclipse以非泛型方式实现所有接口方法:

public class BaseBeanImpl<T> implements NewBaseBean {

    @Override
    public Object create(Object t) {
        return null;
    }

    @Override
    public Object read(Long id) {
        return null;
    }

    @Override
    public Object update(Object t) {
        return null;
    }

    @Override
    public void delete(Object t) {
    }

    @Override
    public Object find(Long id) {
        return null;
    }
}

当我改变时:

public Object create(Object t)

public T create(T t)

我收到编译错误。我错过了什么吗?

1 个答案:

答案 0 :(得分:11)

更改

public class BaseBeanImpl<T> implements NewBaseBean

public class BaseBeanImpl<T> implements NewBaseBean<T>

当您使用原始类型NewBaseBean时,您在界面的方法中得到Object而不是T

public class BaseBeanImpl<T> implements NewBaseBean<T> {

  @Override
  public T create(T t) {
      return null;
  }

  @Override
  public T read(Long id) {
      return null;
  }

  @Override
  public T update(T t) {
      return null;
  }

  @Override
  public void delete(T t) {
  }

  @Override
  public T find(Long id) {
      return null;
  }
}