在Java中,如果我有以下信息:List.class, Map.class, Integer.class
,以及某個Object的實例foo
。是否有可能將foo
轉換爲List<Map<Integer, Integer>>
?我想不是因爲刪除類型,而是想知道是否有另一種方法來實現類似的功能。與泛型的協方差鑄造
編輯:提供更多的上下文。我正在編寫一個能夠接受查詢(由對象和度量組成)並輸出所需度量的應用程序。一個例子是「列表中元素的總和」。客戶端需要編寫一個提供程序,嚮應用程序註冊自己,並廣播它能夠爲某種對象類型提供某種度量類型(例如,爲列表求和)。該應用收到查詢後會匹配正確的提供商並調用其上的方法calculate
。
沒有泛型就很簡單。任何對象實例的規範類型都是它的類。因此,我會將查詢中的對象視爲Object
,然後使用它的class
,找到能夠提供此對象實例的提供程序。指標類似。
現在介紹泛型...假設我將度量標準f
定義爲元素爲Integer
時元素的總和,如果元素爲Double
則爲元素的和。我需要2個供應商,一個供應List<Integer>
,另一個供應List<Double>
。但由於類型擦除,我不能直接使用規範類型class
。所以我存儲了相關的類(List.class
和Integer.class
或List.class
和Double.class
),並使用類的元組匹配提供者。
因此,在calculate
方法中,我需要執行從Object
到供應商處理的適當類型的協變變換。
也許我對問題採取了錯誤的方法?
目前還不清楚,如果你的意思是你知道你正在編寫它的列表,地圖和整數代碼,在這種情況下,你可以做一個普通的老演員,或者如果它的三'類>'對象你不知道,在這種情況下你是正確的,這是不可能的。 – Affe
請提供更多的語料。誰創建實例'List
查看我的編輯 –