类的TypeVariable和变量的ParameterizedType

Posted starkbrothers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的TypeVariable和变量的ParameterizedType相关的知识,希望对你有一定的参考价值。

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】。

以上是关于类的TypeVariable和变量的ParameterizedType的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 setValue:forKey 来获取 C 类型的变量?

AndroidStudio启动异常:Caused by: java.lang.IllegalArgumentException: Argument for @NotNull paramet

csharp string KelimeBul(string cumle,int kelimeSirasi)adındabirmetottanımlanacaktır。 Metot a paramet

C++:“vector<int>::size_type 变量”——以这种方式声明的意义何在?

C++模板—部分特化

深入理解php内核 编写扩展 II:参数数组和ZVALs