美文网首页杂七杂八程序员Java
我眼中的Java-Type体系(1)

我眼中的Java-Type体系(1)

作者: 贾博岩 | 来源:发表于2017-04-21 00:02 被阅读891次

上一篇,提到了Java泛型的“擦除”;今天,我们说下Java-Type体系;

Type是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java中所有类型的“爹”;其中,“所有类型”的描述尤为值得关注。它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象;

Type体系中类型的包括:原始类型(Class)、参数化类型(ParameterizedType)、数组类型(GenericArrayType)、类型变量(TypeVariable)、基本类型(Class);

原始类型,不仅仅包含我们平常所指的类,还包括枚举、数组、注解等;

参数化类型,就是我们平常所用到的泛型List、Map;

数组类型,并不是我们工作中所使用的数组String[] 、byte[],而是带有泛型的数组,即T[] ;

基本类型,也就是我们所说的java的基本类型,即int,float,double等

空接口

Type是个空接口,没有定义任何方法,通过多态提高了程序的扩展性,具体实现去看下面的子类;

Type体系

查看源码,Type接口下共有4个"儿子",每一个“儿子”代表着Java中的一种类型;

1.ParameterizedType

参数化类型,即泛型;例如:List<T>、Map<K,V>等带有参数化的对象;

ParameterizedType源码

2.TypeVariable

类型变量,即泛型中的变量;例如:T、K、V等变量,可以表示任何类;在这需要强调的是,TypeVariable代表着泛型中的变量,而ParameterizedType则代表整个泛型;

TypeVariable源码

3.GenericArrayType

泛型数组类型,用来描述ParameterizedType、TypeVariable类型的数组;即List<T>[] 、T[]等;

GenericArrayType源码

4.Class

上三者不同,Class是Type的一个实现类,属于原始类型,是Java反射的基础,对Java类的抽象;

在程序运行期间,每一个类都对应一个Class对象,这个对象包含了类的修饰符、方法,属性、构造等信息,所以我们可以对这个Class对象进行相应的操作,这就是Java的反射;

5.WildcardType

泛型表达式(或者通配符表达式),即? extend Number、? super Integer这样的表达式;WildcardType虽然是Type的子接口,但却不是Java类型中的一种;

WildcardType源码

以上,简单介绍了Java-Type的体系;为了解决泛型,JDK1.5版本开始引入Type接口;在此之前,Java中只有原始类型,所有的原始类型都是通过Class进行抽象;有了Type以后,Java的数据类型得到了扩展,从原始类型扩展为参数化类型(ParameterizedType)、数组类型(GenericArrayType)、类型变量(TypeVariable);

下一篇,就通过具体的代码,来更加直观的了解以上4种Type类型;

相关文章

  • 我眼中的Java-Type体系(1)

    上一篇,提到了Java泛型的“擦除”;今天,我们说下Java-Type体系; Type是Java 编程语言中所有类...

  • Retrofit2源码分析

    准备知识 我眼中的Java-Type体系(2)对Method解析的时候要用到在分析源码前有哪些疑问呢?CallAd...

  • 我眼中的Java-Type体系(2)

    上一篇,提到了Java-Type体系,对Type类型进行了简单的讲解;本篇,就用代码的方式,对其中的5大类型:原始...

  • Java泛型的学习和使用

    前面,由于对泛型擦除的思考,引出了对Java-Type体系的学习。本篇,就让我们继续对“泛型”进行研究: JDK1...

  • 我眼中的知识体系

    关于知识体系的问题,在分答火了。 有问罗振宇:如何构架自己的知识体系? 罗胖这么回答,知识是一个价值观架构,我到四...

  • 我眼中的世界(1)

    人类简史 最初有着这样的疑问:人类到底是如何从一片虚无发展到了今天这个世界的? 一开始试图从《圣经》中寻找答案,读...

  • 我眼中的自己——1

    提到这,就不自觉的想要好好说说我自己了,我这个人除了太认真,较真,易怒之外,还是集优点与一身的,比如,我可爱啦,哈...

  • 我眼中的爸爸+1

    1、爸爸给我判作业。 2、爸爸陪我玩电脑。 3、爸爸逗我玩。 4、爸爸您辛苦啦。 5、爸爸陪我玩玩具。 6、爸爸保...

  • 我眼中的世界1

    想坚持写作其实已经很久了,但是一直下不了这个决心,前段时间坚持过一段时间,每天晚上写1000字左右,这样练习。后来...

  • 我眼中的他1

    这文章没有逻辑,没有情怀,能看得懂的,也许只有我和他,可是,他是不会看到的。 他的第一任CP是个男人,豁达,气场强...

网友评论

  • MigrationUK:为什么这个知识点那么冷门,资料也不多
    贾博岩:@MigrationUK 确实很少,我也是从了解范行才了解到type上的,可能是平常工作基本也用不上的可能吧

本文标题:我眼中的Java-Type体系(1)

本文链接:https://www.haomeiwen.com/subject/pbviattx.html