【Java集合 3】List<T>和List<?>的区别

🍅 Java学习路线: 🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步

一、简介

<T>在List、Set、Map中经常见到,用来限制Class中的参数类型,确保Class中参数的一致性。例如:List<String> list = new ArrayList<>();创建了一个内部参数是String类型的类,list中的操作对象都是String。<?>代表任意java类型,只有在不关心数据的具体类型下才使用通配符表示,但在一些情况下,需要将<?>传入的数据进行强转,但这样不如直接传入<T>。

另外除了<?>,还有<? extends T>上界通配符和<? super T>下界通配符。<? extends T> 表示传入数据值需要是T类型或T的子类,<? suprt T>表示传入数据值需要是T类型或T的超类。

一般来说,<?>主要用于变量上,<T>主要用于类或方法上。下图中,list的元素类型为?,但往里边添加String时,会显示出错࿰

经验分享 程序员 微信小程序 职场和发展