1、參考文章
Java中與泛型相關的接口 之 GenericDeclaration - 簡書
ParameterizedType詳解 - 94me的博客 - CSDN博客
2、在定義類時,通過在尖括號【<>】內使用K、V等作為類型的占位符。在定義變量時,如果用到這個類,就需要為K、V等類型占位符指定明確的類型。這樣就完成從定義到使用的全套操作。
3、尖括號內的K、V等占位符其實就是類的類型變量【TypeVariable】,並且可以通過類的【getTypeParameters】方法獲取。當然類也可以限定只接受某些類型,通過【extends】去限制即可。
4、在聲明這個類型的變量時,就需要為K、V等占位符填上具體的類型,形成類似【Map<String,Long> map1;】的語句。其中map1的類型就是【Map<String,Long>】,那這個類型是類嗎?不是,它是一個組合的類型,【Map】是它的原始類型【RawType】,【<String,Long>】是它的實際參數【ActualTypeArguments】。這個組合類型有一個學名叫做【ParameterizedType】。
5、對於組合類型【Map.Entry<Long,Short>】還有一個【OwnerType】,就是【Map】。

