java - 泛型数据类型创建是未经检查或不安全的操作
问题描述
我试图用泛型创建一个新的数据类型,但 javac 编译器一直告诉我
"Note: MyStack.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
, when I try to recompile it with the option -Xlint,
"MyStack.java:8: warning: [unchecked] unchecked cast
data = (T[]) new Object[5];
^
required: T[]
found: Object[]
where T is a type-variable:
T extends Object declared in class MyStack
1 warning
. 我应该怎么做才能避免这个警告?
public class MyStack<T> {
int index;
private T[] data;
public MyStack() {
index = 0;
data = (T[]) new Object[5];
}
public void push(T input) {
data[index++] = input;
}
public T pop() {
return data[--index];
}
}
解决方案
我认为没有办法避免警告。在这个问题中,我们可以看到使用 Array.newInstance(class, size) 的解决方案。但是我们应该添加注解'@SuppressWarnings("unchecked")'来处理它。
此外,如果您不做编程练习或做框架/库。我建议您使用 java.collection 数据结构。
我希望我帮助了你