Java: 使用对象扩展 ArrayList

Java: Extending ArrayList Using Objects

我正在 Java 中扩展 ArrayList(不实现接口)。我在函数中遇到错误:

 public void push(Object o) {
    add(o);
}

它说“类型 ArrayList< E > 中的方法 add(E) 不适用于参数。我该如何解决这个问题?

这对我有用,我不确定你想用它实现什么。

public class MyList<E> extends ArrayList<E>{
     public void push(E o) {
            add(o);
        }
}

正如 @shikjohari 所指出的,您需要指定如何扩展 ArrayList。

您收到此错误的原因是因为您正试图将 Object 推送到期望获得类型 E 的内容的 ArrayList。因此,您需要明确地将 o 强制转换为类型 E 才能使其正常工作(当然,您需要确保 o 之前确实是动态类型 E你执行铸造)。

假设E是在别处定义的class(这里不代表泛型,否则编译器应该给你另一个错误——"E cannot be resolved to a type"而不是"The method add(E) in the type ArrayList< E > is not applicable for the arguments"),你应该有如下内容:

// 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);
        }
    }
}