java - 如何实现使用模板的界面?

标签 java linked-list immutability

我希望实现如下所示的不可变列表接口(interface):

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

当我让 netbeans 为我实现接口(interface)时,出现了:

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.");
  }
}

第一种方法允许将任何类型的对象存储在列表中,使其变得非常困惑。

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

MyList is not abstract and does not implement method append(object) in InterfList

最佳答案

你应该这样做:

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> .

关于java - 如何实现使用模板的界面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099276/

相关文章:

java - 搜索并从链表中删除节点

c - 使用先序遍历从二叉树创建链表

java - 没有 ABAP Workbench 的 SAP 编程

java - 扩展HashMap以获取具有指定hashcode的所有对象?

java - Spring 3 MVC - 在生产中找不到 Url 映射 (404)

c# - 验证使用仅初始化 setter 初始化的 C# 对象

c# - 如何释放或回收 C# 中的字符串?

java - 循环队列toString方法忽略一些条件

data-structures - 快速插入/删除的数组

java - 不可变类中的可变对象字段