Java 什么是<;E>;集合中的平均值<;E>;?
代码Java 什么是<;E>;集合中的平均值<;E>;?,java,generics,collections,Java,Generics,Collections,代码对代码集合有什么意义?它是泛型的使用。看看这个。然后别忘了读这个 下面是一段摘录(比较了cast和泛型的使用): 当您看到代码时,请阅读它 作为“类型”;上述声明 读作“字符串c的集合” 使用泛型的代码更清晰、更简单 更安全的。我们已经消除了不安全因素 演员和一些额外的演员 圆括号。更重要的是,我们有 移动部分的规格 方法从注释到其 签名,以便编译器可以验证 在编译时,类型 运行时不违反约束 时间因为程序是编译的 在没有警告的情况下,我们可以用 它肯定不会抛出错误 运行时的ClassCast
对代码集合有什么意义?它是泛型的使用。看看这个。然后别忘了读这个
下面是一段摘录(比较了cast和泛型的使用):
当您看到代码时,请阅读它
作为“类型”;上述声明
读作“字符串c的集合”
使用泛型的代码更清晰、更简单
更安全的。我们已经消除了不安全因素
演员和一些额外的演员
圆括号。更重要的是,我们有
移动部分的规格
方法从注释到其
签名,以便编译器可以验证
在编译时,类型
运行时不违反约束
时间因为程序是编译的
在没有警告的情况下,我们可以用
它肯定不会抛出错误
运行时的ClassCastException。这个
使用泛型的净效果,
特别是在大型程序中,是
提高了可读性和健壮性
例如,列表的接口是
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
这意味着您正在处理类型为E
的项目集合。想象你有一杯茶。它也可以装咖啡,而不是茶,因此将杯子描述为一个通用实体是有意义的:
class Cup<T> { … }
注意上面的编译错误吗?只有在使用泛型时才能得到这个结果。以下代码也可以工作,但不会给出正确的错误消息:
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!
我需要你的帮助来更好地学习这些藏品。一点混乱的感觉,因为班级杯实际上会被称为T杯:)@lagerdalek:这一点我都没有忘记。;-)事实上,这一解释的灵感来源于:我从zazzle那里得到了我自己的杯子,因为我看到Joel Pobar在Tech Ed上做了一次F#演讲,开场幻灯片显示了一个杯子:)我把List
读作“类型列表”,好像T是类型的缩写。我注意到很多代码中都有
。它是什么的缩写吗?或者我应该把它读成“收藏的E”
class Cup<T> { … }
Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();
Collection<String> strList = new ArrayList<String>();
strList.add("Foobar"); // Works.
strList.add(42); // Compile error!
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!