[英]javassist : cannot parse method body with parameterized Maps/Lists
[英]Parameterized Lists in method signature
類似於以下內容不會給我編譯時或運行時錯誤,並且我為原因畫了一個空白。 有沒有辦法在對cls.add的調用上強制執行編譯錯誤?
為什么不將類定義中T的定義傳遞給內部方法的調用? 我知道我沒有以這種方式實例化該類,但是該類的定義指出T必須是一個數字。
public class NewClass<T extends Number> {
private List<T> id = new ArrayList<T>();
public void add(List<T> elem) {
id.addAll(elem);
}
public static void main(String[] args) {
NewClass cls = new NewClass();
cls.add(new ArrayList<String>());
}
}
您正在使用原始類型。 在這種情況下,所有類型信息都將被忽略,並且您會得到警告。
如果提供類型參數,它將失敗:
NewClass<Integer> cls = new NewClass<Integer>();
cls.add(new ArrayList<String>()); //error
實例化cls時,需要提供通用類型,例如:
NewClass<Integer> cls = new NewClass<Integer>();
這將導致警告,因為在這種情況下將禁用泛型的使用(您使用的是原始類型)。 那是出於向后兼容的原因。 您可以使編譯器將警告視為錯誤: Javac:將警告視為錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.