我希望实现如下所示的不可变列表界面:
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
答案 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>
。