![](/img/trans.png)
[英]Eclipse error directly following @SuppressWarnings(“unchecked”)
[英]Add @SuppressWarnings(“unchecked”) in generics to single line generates eclipse compiler error
我偶然發現了一個我不理解的奇怪行為。
我必須將一個String轉換為泛型,它會產生一個警告。
Type safety : Unchecked cast from String to T
如果我在方法聲明上面添加@SuppressWarnings("unchecked")
它可以正常工作。
如果我將它添加到賦值之上,它會在eclipse中產生編譯器錯誤。
這很好用。
@SuppressWarnings("unchecked")
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
returnValue = (T) collection.getString(attrName);
}
這不行。
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
@SuppressWarnings("unchecked") // Compiler error: "returnValue cannot be resolved to a type"
returnValue = (T) collection.getString(attrName);
}
有什么想法導致兩種抑制警告方法之間的差異?
你不能對任意表達式進行注釋(但是?可能它們稍后會添加它)。
但是,您可以在局部變量聲明上添加注釋。
所以編譯器在這里嘗試做的是將returnValue
解釋為一個類型(因為這是唯一可以遵循方法體內注釋的東西)並且失敗。
在這種情況下, returnValue
注釋放在returnValue
的聲明中沒有幫助。 但是,您可以創建一個新的局部變量,在初始化程序中執行強制轉換並對其進行注釋。
@SuppressWarnings("unchecked")
T string = (T) collection.getString(attrName);
returnValue = string;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.