Java里面的<?>和<T>有什么区别???

wakaka1122
wakaka1122 2016-12-07 字数 22

最好能举例说明一下,3q

Java Java技术
15 个回复
zms
小美 2016-12-07

你可以认为  <?>  相当于  <Object>

【 在 wakaka1122 (wakaka1122) 的大作中提到: 】

: 标  题: Java里面的<?>和<T>有什么区别???

: 发信站: 水木社区 (Wed Dec  7 20:41:27 2016), 站内

: 最好能举例说明一下,3q

: --

wakaka1122
wakaka1122 2016-12-07

<Object>和<T>有什么区别呢

【 在 zms 的大作中提到: 】

: 你可以认为  <?>  相当于  <Object>

zms
小美 2016-12-07

T 是变量啊 ,不是说有个  类 叫 T

Object 是泛型变量 具体化了,Object是个类

【 在 wakaka1122 (wakaka1122) 的大作中提到: 】

: 标  题: Re: Java里面的<?>和<T>有什么区别???

: 发信站: 水木社区 (Wed Dec  7 22:38:17 2016), 站内

: <Object>和<T>有什么区别呢

: 【 在 zms 的大作中提到: 】

: : 你可以认为  <?>  相当于  <Object>

: :

: :

: --

wakaka1122
wakaka1122 2016-12-07

T算是一个类?

【 在 zms 的大作中提到: 】

: T 是变量啊 ,不是说有个  类 叫 T

: Object 是泛型变量 具体化了,Object是个类

canper
洗衣粉 2016-12-07

<? extends List>呢

【 在 zms (小美) 的大作中提到: 】

: 你可以认为  <?>  相当于  <Object>

MyWorkLife
我是谁 2016-12-07

应该是Object和<T>的区别

后者编译时更安全

【 在 wakaka1122 (wakaka1122) 的大作中提到: 】

: 标  题: Re: Java里面的<?>和<T>有什么区别???

: 发信站: 水木社区 (Wed Dec  7 22:38:17 2016), 站内

: <Object>和<T>有什么区别呢

: 【 在 zms 的大作中提到: 】

: : 你可以认为  <?>  相当于  <Object>

: :

: :

: --

nikezhang
难得糊涂 2016-12-08

他说的是<?>,和这个不太一样

【 在 canper (洗衣粉) 的大作中提到: 】

:   <? extends List>呢

:  【 在 zms (小美) 的大作中提到: 】

GrailGrail
圣杯 2016-12-09

去看《java编程思想》泛型这一章

【 在 wakaka1122 的大作中提到: 】

: 最好能举例说明一下,3q

wakaka1122
wakaka1122 2016-12-09

直接把关键转贴过来吧

【 在 GrailGrail 的大作中提到: 】

: 去看《java编程思想》泛型这一章

suitianshi
碎天使||碎天屎 2016-12-10

T定义了一种类型,问号用来接受一种类型范围,这俩没啥关系

graceman
过眼云烟 2016-12-31

有的时候你没有t用,只能用?

不过java这个煞笔的泛型实现,真是用一次骂一次,为了填之前偷的懒的坑,徒增复杂度,没解决卵的问题.

【 在 wakaka1122 的大作中提到: 】

: 直接把关键转贴过来吧

: 【 在 GrailGrail 的大作中提到: 】

: : 去看《java编程思想》泛型这一章

stonelee726
小石头726 2017-01-04

T是给定一个泛型之后不可变的,?是可以变得 比如?extends List可以使array也可以是link

wakaka1122
wakaka1122 2017-01-04

感觉你说到点上了,赞

【 在 stonelee726 的大作中提到: 】

: T是给定一个泛型之后不可变的,?是可以变得 比如?extends List可以使array也可以是link

qinggumeng
qinggumeng 2017-01-08

T声明后主要是保持将来类型的一致性;而?则表示类型的任意性,是类型的占位符,不能单独用作参数类型或返回值类型,而T则可以。

public class Test<T>{

T get();

void set(T t);

void get2(Test<?> test);

}

wakaka1122
wakaka1122 2017-01-09

3q,赞。

【 在 qinggumeng 的大作中提到: 】

: T声明后主要是保持将来类型的一致性;而?则表示类型的任意性,是类型的占位符,不能单独用作参数类型或返回值类型,而T则可以。

: 如

: public class Test<T>{

: ...................