[英]warning: [unchecked] unchecked cast while using Generic Array
我正在創建自己的固定課程。 但是,一開始,我會發出警告。 我在此鏈接中使用如何創建通用數組? 。 但是我已經警告過了。
這是我的警告消息:
MySet.java:11: warning: [unchecked] unchecked cast
data = (T[]) new Object[10];
^
required: T[]
found: Object[]
where T is a type-variable:
T extends Object declared in class MySet
1 warning
這是我的初學者代碼:
Main.java
public class Main{
public static void main(String[] args){
MySet<Integer> a = new MySet<Integer>();
System.out.printf("empty or not = %d\n",a.empty());
}
}
MySetInterface.java
public interface MySetInterface<T> {
public int empty();
}
MySet.java
public class MySet<T> implements MySetInterface<T>{
private T[] data;
private int used;
private int capacity;
public MySet(){
used = 0;
capacity = 1024;
data = (T[]) new Object[10];
}
public int empty(){
if(used == 0){
return 1;
}
else{
return 0;
}
}
如果我用
@SuppressWarnings("unchecked")
data = (T[]) new Object[10];
我現在收到此錯誤消息:
MySet.java:12: error: <identifier> expected
data = (T[]) new Object[10];
^
1 error
如果您閱讀了所提供問題的答案,則將對為何顯示警告給出非常詳盡的解釋,並且還提供了有效的解決方法。
上面的代碼具有與上述相同的含義。 如果您注意到了,當您將類型轉換轉換為未知組件類型的數組時,編譯器將在此處向您發出未經檢查的強制轉換警告。 這意味着強制轉換可能會在運行時失敗。 例如,如果您在上述方法中具有該代碼:
建議的類型安全代碼。
public <E> E[] getArray(Class<E> clazz, int size) {
@SuppressWarnings("unchecked")
E[] arr = (E[]) Array.newInstance(clazz, size);
return arr;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.