[英]generics syntax map.entry
我有一個變量:
Class<Map.Entry<String, Boolean>> clazz;
我想為它分配一個類而不實例化任何東西。 但編譯器不允許我寫:
Class<Map.Entry<String, Boolean>> clazz = Map.Entry<String, Boolean>.class;
我怎么做作業?
Class<Map.Entry<String, Boolean>> clazz =
(Class<Map.Entry<String, Boolean>>)(Class<?>)Map.Entry.class;
啊,類型擦除的樂趣。
Java編譯器區分Map.Entry
(raw)和Map.Entry<String, Boolean>
(參數化)類型。 不幸的是,您無法使用.class
在類型文字中添加類型參數。 所以你必須施展。 但你不能直接這樣做; 你必須通過Class<?>
進行'繞道'。 我不記得為什么,確切地說,我很抱歉:)。
此外,你會得到一個“未經檢查”的警告,你可以壓制它,因為你知道(在這種情況下)演員陣容將永遠成功。 所以:
@SuppressWarnings("unchecked")
Class<Map.Entry<String, Boolean>> clazz =
(Class<Map.Entry<String, Boolean>>)(Class<?>)Map.Entry.class;
(無需在發生此分配的方法上發出警告;您可以直接將其放在分配之前。)
請享用! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.