我在Java中扩展了ArrayList(没有实现接口)。我在函数中遇到错误:
public void push(Object o) {
add(o);
}
它说"方法add(E)在类型ArrayList< E>不适用于参数。我该如何解决这个问题?
答案 0 :(得分:1)
这对我有用,我不确定你想用这个来实现什么。
public class MyList<E> extends ArrayList<E>{
public void push(E o) {
add(o);
}
}
答案 1 :(得分:1)
正如@shikjohari所指出的,您需要指定如何扩展ArrayList。
您收到此错误的原因是您尝试将Object
推送到期望获得E
类型的ArrayList。因此,您需要明确地将o
转换为E
类型才能使其生效(当然,您需要确保o
确实属于动态类型E
之前你进行演员表演。)
假设E
是在其他地方定义的类(这里它不代表泛型类型,否则,编译器应该给你另一个错误 - &#34; E无法解析为类型&#34;而是&#34;类型ArrayList&lt; E&gt;类型中的方法add(E)不适用于参数&#34;),您应该具有以下内容:
// This class is defined somewhere in your package
class E {
}
public class YourClass extends ArrayList<E> {
public void push(Object o) {
if (o instanceof E) {
add((E) o);
}
}
}