【发布时间】:2019-02-28 04:33:26
【问题描述】:
我有一个扩展 Java 的 ArrayList 的类。我目前正在使用 Java build 1.6.0_22-b04。看起来像这样:
public class TokenSequence extends ArrayList<Token>{
public TokenSequence (Collection<Token> tokens) {
super(tokens);
}
public void add(Object o) {
if (o instanceof Token){
add( (Token)o );
}
else if (o instanceof TokenSequence)
add( (TokenSequence)o );
else
add( new Token( o.toString() ) );
}
}
我在上面代码中的问题是 add(Object o) 方法。 Java 不允许我编译代码,因为它说
"Name clash: The method add(Object) of type TokenSequence has the same erasure as add(E) of type ArrayList<E> but does not override it"
同样的代码在 Java build 1.6.0_17-b04 下的另一台计算机上运行没有问题。
有人对快速修复有任何想法吗?
【问题讨论】:
-
你确定你的代码不能编译吗?
-
@org:他可能将警告设置为错误。
-
@SLaks 标准 javac 甚至没有警告
-
@org: stackoverflow.com/questions/502614/…;我编辑了我的答案。
-
我添加了 add 方法的其余部分。如果我更改为 extends ArrayList
或 extends ArrayList