java中的 class<T>和 class<?>类型 有什么区别,可以互相转换来用吗?是好举例来说明一下

 我来答
中国青春心
2012-06-19 · TA获得超过4637个赞
知道小有建树答主
回答量:1966
采纳率:83%
帮助的人:564万
展开全部
泛型是指规定一定的类型。
Class<T>是泛型 Class<?>是不确定类型,一般来说没什么区别,还有一个就是Class类型,没有泛型。 但是有时候会有点点区别,比如定义这种类型变量,这里的Class首字母需要大写,因为java中class是关键字,希望注意。
例如:Class a;Class<T> b; Class<?> c; 这三个变量,区别在于接受不同类型。 只有T可以接受泛型,其他一样。 Class<T> b; 可以写为具体类型Class<String>

泛型都是在编译期的,就是要把类型错误处理在编译期,减少在运行时类型异常
在运行时泛型都会被擦除,就跟没泛型一个样,所以完全看你如何定义,编译时不报错就好。
kejiaweiren
推荐于2017-11-25 · TA获得超过6740个赞
知道大有可为答主
回答量:1774
采纳率:0%
帮助的人:3343万
展开全部
平时看java源代码的时候,如果碰到泛型的话,我想? T K V E这些是经常出现的,但是有时想不起来代表什么意思,今天整理下:

? 表示不确定的java类型。
T 表示java类型。
K V 分别代表java键值中的Key Value。
E 代表Element。

Object跟这些东西代表的java类型有啥区别呢?
Object是所有类的根类,是具体的一个类,使用的时候可能是需要类型强制转换的,但是用T ?等这些的话,在实际用之前类型就已经确定了,不需要强制转换。
追问
也就是说,这个方法能知道返回的是哪种类型(父类),就用T行了?如果完全不知道的就用?用T的得到的对象就不需要类型转换了,而用?的就必需用强转了!
追答
第一种是固定的一种泛型,第二种是只要是Object类的子类都可以,换言之,任何类都可以,因为Object是所有类的根基类
固定的泛型指类型是固定的,比如:Interge,String. 就是

这里?代表一个未知的类型,
但是,这个未知的类型实际上是Collection的一个子类,Collection是这个通配符的上限.
举个例子
class Test { }

其中,限定了构造此类实例的时候T是一个确定类型(具体类型),这个类型实现了Collection接口,
但是实现 Collection接口的类很多很多,如果针对每一种都要写出具体的子类类型,那也太麻烦了,干脆还不如用
Object通用一下。
其中,?是一个未知类型,是一个通配符泛型,这个类型是实现Collection接口即可。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式