簡體   English   中英

如何在沒有未經檢查的強制轉換警告的情況下從通配符轉換為通用返回類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM