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

时间:2014-06-07 16:27:17

标签: java linked-list immutability

我希望实现如下所示的不可变列表界面:

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

第一种方法是允许任何类型的对象存储在列表中,这使得它非常混乱。

然而,第一种方法在netbeans中标记为错误:

  

MyList不是抽象的,并且未在append(object)中实施方法InterfList

1 个答案:

答案 0 :(得分:2)

你应该这样做:

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>