技术大神|大知识,如何合理的使用list、你学会了吗?,小代码

【技术大神|大知识,如何合理的使用list、你学会了吗?,小代码】类型统配符-1有如下例子:voidprintList(List1){for(0bjecto:1){System.out.println(o);.}}.上面代码中的问号是一个类型通配符 。 它读作“问号” 。 List是任何泛型List的父类型 , 所以可以将List<0bject>、List或List>>传递给printList() 。 引入了类型通配符 , 这让您可以声明List类型的变量 。 您可以对这样的List做什么呢?非常方便 , 可以从中检索元素 , 但是不能添加元素 。 原因不是编译器知道哪些方法修改列表哪些方法不修改列表 , 而是(大多数)变化的方法比不变化的方法需要更多的类型信息 。
类型统配符-2下面的代码则工作得很好:Listli=newArrayList():li.add(newInteger(42));Listlu=li;System.out.println(1u.get(0));为什么该代码能工作呢?对于lu,编译器一点都不知道List的类型参数的值 。 但 , 是编译器比较聪明 , 它可以做一些类型推理 。 在本例中 , 它推断未知的类型参数必须扩展Object 。 (这个特定的推理没有太大的跳跃 , 但是编译器可以作出一些非常令人佩服的类型推理 , 所以它让您调用List.get()并推断返回类型为0bject 。
技术大神|大知识,如何合理的使用list、你学会了吗?,小代码
文章图片