java - 使用 -Xlint 重新编译:未检查 java 中的详细错误
问题描述
我有以下错误,我似乎无法弄清楚如何调试它:
注意:MyStack.java 使用未经检查或不安全的操作。
注意:使用 -Xlint:unchecked 重新编译以获取详细信息。
public class MyStack<T> implements MyStackInterface<T>{
private T[] s;
private int size;
public MyStack() {
this.s = (T[])new Object[30];
}
public void push(T x){
if (size==s.length){
T[] b = (T[])new Object[size*2];
int i;
for (i=0;i<s.length;i++){
b[i] = s[i];
}
s=b;
}
s[size++] = x;
}
public T pop(){
if (size == 0){
throw new RuntimeException("Stack Underflow");
}
return s[--size];
}
public T peek(){
if (size==0) throw new RuntimeException("Stack Underflow");
return s[size-1];
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
}
解决方案
当你编译代码时使用这个:
javac -Xlint:unchecked
然后你会看到:
MyStack.java:6: warning: [unchecked] unchecked cast
this.s = (T[])new Object[30];
^
required: T[]
found: Object[]
where T is a type-variable:
T extends Object declared in class MyStack\
MyStack.java:11: warning: [unchecked] unchecked cast
T[] b = (T[])new Object[size*2];
^
required: T[]
found: Object[]
where T is a type-variable:
T extends Object declared in class MyStack
2 warnings
所以底线,问题是由于泛型类型数组的创建。要解决此问题,请阅读此链接:https ://stackoverflow.com/a/530289/588532
推荐阅读
- javascript - Travis 测试返回未定义
- jquery - Wordpress 插件 - jquery 导致页面加载两次
- vue.js - 材料设计组件滚动选项卡不滚动
- sql-server - plesk 的 MSSQL server 2014 正在连接到我的 Management Studio 2016
- servlets - Prometheus 指标 servlet 不显示任何指标
- generics - 尝试在 kotlin 中为数据类编写补丁函数
- python - 如何在使用 python 3.6 的回调期间暂停?
- r - dplyr::first() 选择第一个非 NA 值
- javascript - 获取按钮中第一个单元格的值单击第三个单元格
- spring - 检查 ClassPathResource 是文件还是文件夹