首页 / JAVA / 使用通配符的Java集合
使用通配符的Java集合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用通配符的Java集合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1056字,纯文字阅读大概需要2分钟。
内容图文
public static void main(String[] args) {
List<? extends Object> mylist = new ArrayList<Object>();
mylist.add("Java"); // compile error
}
上面的代码不允许您向列表中添加元素,并且通配符只能用作方法中的签名,同样不能用于添加,而只能用于访问.
在这种情况下,上述目的是什么?
解决方法:
假设您有一个接口和两个类:
interface IResult {}
class AResult implements IResult {}
class BResult implements IResult {}
然后你有一些类返回一个列表作为结果:
interface ITest<T extends IResult> {
List<T> getResult();
}
class ATest implements ITest<AResult> {
// look, overridden!
List<AResult> getResult();
}
class BTest implements ITest<BResult> {
// overridden again!
List<BResult> getResult();
}
当你需要“协变返回”时,这是一个很好的解决方案,但你返回集合而不是你自己的对象.最大的好处是,当您独立于ITest界面使用ATest和BTest时,您不必投射对象.但是,在使用ITest界面时,您无法向返回的列表添加任何内容 – 因为您无法确定列表实际包含的对象类型!如果允许,您可以将BResult添加到List< AResult> (以List<?延伸T>返回),这没有任何意义.
所以你必须记住这一点:List<?扩展X>定义一个可以轻松覆盖的列表,但该列表是只读的.
内容总结
以上是互联网集市为您收集整理的使用通配符的Java集合全部内容,希望文章能够帮你解决使用通配符的Java集合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。