如何实现使用模板的接口



我希望实现这样的不可变列表接口:

public interface InterfList<T> extends Iterable<T> {
    public InterfList<T> append(T t);
    //More abstract methods follow
}

当我让netbeans为我实现接口时,出现了以下内容:

public class MyList implements InterfList  {
  private Object value;
  @Override
  public InterfList append(Object t) {
      throw new UnsupportedOperationException("Not supported yet.");
  }
}

但是,我想保留模板,以便只接受适当类型的对象。如:

public class MyList<T> implements InterfList  {
  private T value;
  @Override
  public InterfList<T> append(T t) {
      throw new UnsupportedOperationException("Not supported yet.");
  }
}

第一种方法将允许在list中存储任何类型的对象,这使得它相当混乱。

第一种方法在netbeans中被标记为错误:

MyList不是抽象的,在InterfList中没有实现方法append(object)

你应该这样做:

public class MyList<T> implements InterfList<T>  {
  private T value;
  @Override
  public InterfList<T> append(T t) {
      throw new UnsupportedOperationException("Not supported yet.");
  }
}

您想实现InterfList<T>

由于您在没有任何类型参数的情况下实现InterfList,因此您正在实现InterfList<Object>,这会导致append方法出现错误,该方法采用T而不是Object。您想要实现InterfList<T>

相关内容

  • 没有找到相关文章