java - <E>在Collection<E>中是什么意思?

标签 java generics collections

什么意思有 <E> 关于代码 Collection<E>

最佳答案

这意味着您正在处理类型为 E 的项目集合。想象一下,你有一杯茶。除了茶,它还可以装咖啡,因此将杯子描述为一个通用实体是有意义的:

class Cup<T> { … }

现在您可以用咖啡或茶(或其他东西)填充它:

Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();

为了让它工作,TeaCoffee 也需要是在您的程序中定义的类型。

这是对您的代码的编译时约束。从(相当无用的)杯子示例回来,集合(数组、列表……)通常包含一个类型的项目,例如整数或字符串。泛型帮助您用 Java 表达:

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

关于java - <E>在Collection<E>中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056820/

相关文章:

java - 接口(interface)扩展了链表泛型上的接口(interface)

javascript - 将 Backbone.Collection 用于分页列表?

c# - 可以将内部 List<T> 作为 IEnumerable<T> 或 ICollection<T> 返回吗?

java - Cassandra 心跳请求是否昂贵?

java - Spring Boot-控制404未找到

java - 确定两个字符串是否是另一个字符串的排列的子串

java - Clojure中Java实例方法的并列

c# - 将方法添加到通用堆栈时出现问题?

C# 类继承

c# - WPF - 绑定(bind)到对象中的集合