这篇文章主要介绍“java泛型容器Collection怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java泛型容器Collection怎么用”文章能帮助大家解决问题。
创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业四川移动机房托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
先简单来段例子:
public void testGenerics() {
Collection numbers = new ArrayList<>();
numbers.add(1); // ok
numbers.add(0.1); // ok
Collection numbers2 = new ArrayList<>();
// don't work, you don't know which subtype 'numbers2' exactly contains
numbers2.add(1); // oops!
}
这个例子其实有点反人类,估计大部分人(包括我)对这种转换的第一反应肯定是“当然是对的”(这就掉坑了),说下我的理解:
Collection
Collection:表示这个Collection是Number类型的“某个子类型”的Collection实例,可以是Collection
Collection
再来个例子:
public void testGenerics() {
Collection numbers = new ArrayList<>();
Collection integers = new ArrayList<>();
Collection numbers2 = new ArrayList<>();
numbers2 = integers; // ok
numbers2 = numbers; // ok
// don't work, Collection != Collection
numbers = integers; // oops!
}
Integer明明继承了Number,那为什么
Collection
不成立呢,我们再来看个例子:
public void testGenerics() {
Collection profits = new ArrayList<>();
insertSomething(profits); // line 1
Integer profit = profits.iterator().next(); // oops! crash
}
private void insertSomething(Collection numbers) {
numbers.add(Long.MAX_VALUE);
}
如果line 1成立,那么接下去获取利润将会得到个负数,后续的一系列计算都会发声异常,如果代码不够健壮甚至可能会抛出一些意料之外的RuntimeException,导致方法不正常结束甚至程序crash。
所以一句话,Collection
现在再来说说Collection