![](/img/trans.png)
[英]Unchecked cast: 'java.lang.Class<capture<?>>' to 'java.lang.Class<T>
[英]java: unchecked call to getConstructor(java.lang.Class<?>...)
我正在使用反射來構造一個類(ConfigBuilder),該類將文件作為參數:
Class myClassType = Class.forName(className);
Class[] types = new Class[] { File.class };
Constructor cons = myClassType.getConstructor(types);
Object[] constructorArgs = new Object[] { myFile };
cb = (ConfigBuilder) cons.newInstance(constructorArgs);
但我收到此警告:
warning: [unchecked] unchecked call to getConstructor(java.lang.Class<?>...) as a member of the raw type java.lang.Class
Constructor cons = myClassType.getConstructor(types);
顯然,似乎 getConstructor 需要一個泛型類型,所以我嘗試了類似的方法:
Class<?>[] types = new Class<?>[] { File.class };
但我收到了同樣的警告信息
任何的想法 ?
大衛
警告實際上是指myClassType
。 您還需要對其(以及cons
)進行參數化。
Class<?> myClassType = Class.forName(className);
Class<?>[] types = new Class[] { File.class };
Constructor<?> cons = myClassType.getConstructor(types);
首先,這只是一個警告,在處理編譯時未知的反射和類型時,不應引起您的過度警告。 泛型的優點是更強大的編譯時類型檢查,一旦您調用Class.forName(className)
,所有這些都會消失。
但是,如果您像大多數人(包括我)一樣,那么您可能希望擺脫警告,以免它繼續不必要地引起您的注意。 為此,您可以參數化構造函數變量cons
:
Class<?> myClassType = Class.forName(className);
Class<?>[] types = new Class[] { File.class };
Constructor<?> cons = myClassType.getConstructor(types);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.