[英]How to go from wildcard to generic return type without unchecked cast warning
由於(GenericKeyedObjectPool<String, T>)
,以下代碼將產生Unchecked cast
警告。
從代碼中可以看出,通配符( ? extends ConnectionBase
)和通用類型( T extends ConnectionBase
)是相同的。
如何擺脫Unchecked cast
轉換警告,並在沒有警告的情況下將通配符轉換為通用類型?
private Map<String, GenericKeyedObjectPool<String, ? extends ConnectionBase>> poolMap
= new HashMap<>();
public <T extends ConnectionBase> T borrowObject(
String guid,
Class<T> connClass)
throws Exception {
GenericKeyedObjectPool<String, T> pool
= (GenericKeyedObjectPool<String, T>) poolMap.get(connClass.getName());
return pool.borrowObject(guid);
}
演員陣容不安全。
如果A isConnectionBase
B延伸A
C延伸A
B和C之間的轉換不安全。
為了使轉換安全,您需要通過在類級別上指定T的類型來使其強制冗余,以在整個類中強制它是同一類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.