Class<Object>与Class<?>有何区别

本文探讨了在Java中`Class<Object>`与`Class<?>`的区别,尤其是在编写公共方法时的使用场景。作者指出,Java泛型通过类型擦除实现,虽然在编译期间进行类型检查,但主要作用是增强类型安全性。举例说明,`Class<Object>`与`Class<?>`在接收List参数时,如何影响编译器的警告和错误,从而帮助开发者在早期发现潜在的类型匹配问题。
摘要由CSDN通过智能技术生成

最近在项目中写了一些底层的公共方法,写公共方法不同于写普通方法,有很多的参数都是不具体的指明某个类或者对象的,所以只能用object,class等这些通用的东西代替,所以在做的同时也学习了一些基础的东西。可能很多人已经觉得这很基础了,不过由于没有亲自在项目中写过这些公共的内容,对这些细节思考的还是很少的,现在分享一下自己的一点小收获。


1、? 和 Object 差不多,不过还是有差别。
在这种情况下: class<? extends SomeClass> , Object就不能用了

Object是一个具体的类名,而?是一个占位符号,表示任何类型,只要是SomeClass类或者子类就可以。
List<Object>可以放任何类对象
List<? extends InputStream>就只能放InputStream的实现类了。

运行时刻,没错,Java的泛型是不存在,所以说,效率没有任何影响。

2、泛型中使用通配符?代表类型参数可以是任何对象类型,也可以使用extends表示参数类型可以是某类或其子类,参数类型主要是用于解决早期版中集合取数据时的拆箱操作

3、Java中的泛型是个假泛型,仅仅只是在编译器那
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值