Edg*_*ase 5 java generics unchecked
Intellij 向我发出以下警告。不确定如何解决它,或者即使我需要解决它。警告详细信息说它仅适用于 JDK 5,而我使用的是 6。我想知道是否需要对此做出回应,如果需要,如何回应?
方法调用导致警告
List<T> refObject = cache.getCachedRefObject(cacheKey, List.class);
Run Code Online (Sandbox Code Playgroud)
被调用的方法
public <T> T getCachedRefObject(String objectKey, Class<T> type) {
return type.cast(refObjectCache.get(objectKey));
}
Run Code Online (Sandbox Code Playgroud)
警告详情
Unchecked Assignment
JDK 5.0 only. Signals places where an unchecked warning is issued by the compiler, for example:
void f(HashMap map) {
map.put("key", "value");
}
Run Code Online (Sandbox Code Playgroud)
为此使用了超级类型令牌,我认为如果不使用额外的方法从缓存中检索集合并验证其内容是否具有正确的类型,就无法使此类型安全。
您的选择是:
List<?> refObject = cache.getCachedRefObject(cacheKey, List.class);其中唯一的类型安全变体是 3.,因为它阻止您执行编译器无法证明类型安全的操作。明显的缺点是您可能无论如何都想执行其中一些操作。