【发布时间】:2021-04-02 05:28:35
【问题描述】:
我遇到了关于方法中第 20 行的返回类型是 Object 类型的问题,而不是我期望的类型,它是通用 E。我目前正在开发更大规模的程序,但是已将我遇到的问题浓缩到下面的短代码 sn-p 中。为什么'方法'中的 arr[0].getData() 返回一个对象?任何帮助将不胜感激。
public class Testing<E> {
foo[] arr;
class foo<T> {
public T data;
public foo(T in) {
data = in;
}
public T getData() {
return data;
}
}
public Testing() {
arr = new foo[5];
}
public E method() {
return arr[0].getData();
// Required type E, provided type: Object
}
}
【问题讨论】:
-
这能回答你的问题吗? Cast Object to Generic Type for returning
-
检查您的编译器输出。每次编写
foo而不是foo<E>时,您都应该收到有关原始类型的警告。 -
“我在方法中第 20 行的返回类型是 Object 类型时遇到问题,而不是我期望的类型,它是通用 E”告诉我你的逻辑.你为什么期待E型?当您写
arr = new foo[5];时,您期望使用的模板类型是什么?为什么?您希望为每个元素的.data实例化什么类型?为什么?此外,除了满足编译器之外,您还知道 这些实际上都不会创建任何 Foo 实例,对吗?所以无论如何你都会在运行时得到一个NullPointerException。