我是一个做Java练习的JavaScript开发人员,我需要帮助。
当我尝试用javac编译时,我得到:"uses unchecked or unsafe operations."
我需要担心这个吗?
我做得对吗?
MacBook-Pro-3:Documents garrettsmith$ javac codepoop/*.java -Xlint:unchecked
codepoop/GArrayList.java:30: warning: [unchecked] unchecked cast
return (T) elements[i];
^
required: T
found: Object
where T is a type-variable:
T extends Object declared in class GArrayList
1 warningGArrayList:
import java.util.Arrays;
public class GArrayList<T> {
private Object elements[];
private int size = 0;
public GArrayList() {
elements = new Object[1];
}
public T get(int i) {
return (T) elements[0]; // javac complains about this line.
}
}发布于 2020-09-16 03:29:43
您声明了一个泛型类,但没有使用泛型类型T来存储数据。因为您使用的是数组,所以实际上不能。在这种情况下,只要类确保只添加T类型的对象,就可以取消警告。
public class GArrayList<T> {
private Object elements[];
private int size = 0;
public GArrayList() {
elements = new Object[1];
}
@SuppressWarnings("unchecked")
public T get(int i) {
return (T) elements[0]; // javac complains about this line.
}
public void add(T element) {
elements[index++] = element;
}
}注意,add()方法只接收T,并且数组是私有的,因此不能从类外部访问它。但是,是的,add()方法不能工作。这只是为了说明你如何能够确保类型的安全自己。
https://stackoverflow.com/questions/63912568
复制相似问题