Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是<;E>;集合中的平均值<;E>;?_Java_Generics_Collections - Fatal编程技术网

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?!