列表与列表<?在java中扩展InterfaceI>
发布时间:2020-12-14 05:42:43 所属栏目:Java 来源:网络整理
导读:列表 interfaceI的Arraylist和列表?扩展InterfaceI两者都有实现interfaceI的类对象.那什么时候应该用? 解决方法 假设Foo和Bar是实现InterfaceI的两个类. 第二个(List?extends InterfaceI)不允许向列表添加任何内容(null除外),因为列表包含的类型是未知的
列表< interfaceI>的Arraylist和列表<?扩展InterfaceI>两者都有实现interfaceI的类对象.那什么时候应该用?
解决方法
假设Foo和Bar是实现InterfaceI的两个类.
第二个(List<?extends InterfaceI>)不允许向列表添加任何内容(null除外),因为列表包含的类型是未知的:它可以是List< Foo>或者列表< Bar>:你只是不知道. 因此,当您希望方法读取作为参数传递的列表元素时,通常将此表示法用于方法参数,并希望调用者能够使用List< InterfaceI>,List< Foo>调用您的方法.或列表< Bar>.使用List< InterfaceI>因为参数只接受List< InterfaceI>类型的列表. 让我们举一个具体的例子:你想要计算一个数字列表的最大双精度值.这种方法不需要在列表中添加或设置任何内容.它只是迭代元素,获取每个数字并计算它们的最大值.签名可以是 public double max(List<Number> list); 但是,你将无法做到 List<Integer> ints = new ArrayList<>(); max(ints); 调用此方法的唯一方法是执行此操作 List<Number> ints = new ArrayList<>(); max(ints); 而如果您将方法声明为 public double max(List<? extends Number> list); 那么你可以做到 List<Integer> ints = new ArrayList<>(); List<Long> longs = new ArrayList<>(); max(ints); max(longs) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java常见异常处理
- java – 问题将Base64字符串转换为十六进制字符串
- UnreachableBrowserException由以下引起:java.lang.NullPo
- JSP application.getResourcePaths() 方法:返回指定目录下
- vbox虚拟机vdi文件用VMware打开
- IT兄弟连 Java语法教程 注释与编码规范
- jpa – ‘detach’和’remove’entityManager的方法之间的区
- java – Selenium WebDriver中selenium.waitForPageToLoad(
- java程序员必须要学会的linux命令总结(推荐)
- CF70E Information Reform 题解