class<T>和 class<?>类型 有什么区别

平时看java源代码的时候,如果碰到泛型的话,我想? T K V E这些是经常出现的,但是有时想不起来代表什么意思,今天整理下:

? 表示不确定的java类型。

T  表示java类型。

K V 分别代表java键值中的KeyValue。

E 代表Element。

Object跟这些东西代表的java类型有啥区别呢?

Object是所有类的根类,是具体的一个类,使用的时候可能是需要类型强制转换的,但是用T ?等这些的话,在实际用之前类型就已经确定了,不需要强制转换。

追问:

也就是说,这个方法能知道返回的是哪种类型(父类),就用T行了?如果完全不知道的就用?用T的得到的对象就不需要类型转换了,而用?的就必需用强转了!

追答:

第一种是固定的一种泛型,第二种是只要是Object类的子类都可以,换言之,任何类都可以,因为Object是所有类的根基类

固定的泛型指类型是固定的,比如:Interge,String. 就是

<? extends Collection> 这里?代表一个未知的类型,

但是,这个未知的类型实际上是Collection的一个子类,Collection是这个通配符的上限.

举个例子

class Test { }

其中,限定了构造此类实例的时候T是一个确定类型(具体类型),这个类型实现了Collection接口,

但是实现 Collection接口的类很多很多,如果针对每一种都要写出具体的子类类型,那也太麻烦了,干脆还不如用

Object通用一下。

其中,?是一个未知类型,是一个通配符泛型,这个类型是实现Collection接口即可。

_________________________上面讲的是什么鬼,当你知道引入通配符泛型的由来之后(下面代码由java1234.com提供)_________________________________________________________________________________________

The method take(Animal) in the type Test is not applicable for the arguments (Demo)

The method take(Animal) in the type Test is not applicable for the arguments (Demo)

The method take(Animal) in the type Test is not applicable for the arguments (Demo)

当引入泛型之后,遇到这种情况,参数怎么写都不适合,总有2个方法不适用,为了给泛型类写一个通用的方法,这时候就需要引入了 ?通配符的概念。

publicclassDemo {privateT ob;publicT getOb() {returnob;

}publicvoidsetOb(T ob) {this.ob =ob;

}publicDemo(T ob) {super();this.ob =ob;

}publicvoidprint(){

System.out.println("T的类型是:"+ob.getClass().getName());

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,188评论 18 399
  • 开发人员在使用泛型的时候,很容易根据自己的直觉而犯一些错误。比如一个方法如果接收List作为形式参数,那么如果尝试...
    时待吾阅读 4,697评论 0 3
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,518评论 9 118
  • 1.加载文档事件 $(document)ready();$.holdReady(bool)【jQuery的工具函数...
    大步迈阅读 2,312评论 0 1
  • 最近被要求写一篇长长的自我介绍,其中,名字要叫成《我是一个***的人》。我努力回顾自己活过的这36年,一时不知用哪...
    倪淑清_0449阅读 3,547评论 1 2

友情链接更多精彩内容