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);
}
}
}
我正在 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);
}
}
}