定义为:

noneOf(Class<E> elementType)
Creates an empty enum set with the specified element type.

但是为什么它需要Class<E>,而不是像noneOf(T elementType)中那样的T呢?

既然它似乎需要,为什么不在类中使用anytype&lt&燃气轮机;

推荐答案

我知道编译时的类型(权限),所以可能是EnumSet.noneOf(Authority)

你不能做EnumSet.noneOf(Authority),因为那不是合法的Java.当你想传递一个类型时,你可以使用Class实例,当你在编译时知道需要的类时,你可以使用类文字(例如Authority.class).


但是为什么它需要Class<E>,而不是像noneOf(T elementType)中那样的T呢?

从概念上讲,当您需要empty组所述类型时,需要instance个类型是没有意义的.但我想问题是,"为什么首先需要任何论证?".毕竟,你可以这样做:

Set<String> set = new HashSet<>();

没有通过Class个实例.

原因是EnumSet是高度专业化的Set实现.它需要知道所有现有的enum个常数,即使集合为空,也可以使用Class查询这些常数.此外,该实现仅适用于single type.EnumSet不能包含来自不同enum类型的常数.Class允许实现强制执行这一点.

其他方法,例如EnumSet#of(E),不需要Class,因为它们需要enum的实例(即一个或多个常量),并且可以从中获取类型.


既然它似乎需要,为什么不在类中使用anytype<&燃气轮机;

因为Class<?>分可以通过any type分,而不仅仅是enum分.当然,这可以通过限定通配符Class<? extends Enum<?>>来解决.现在只允许使用enum种类型,但静态类型系统不知道您正在使用的which enum种类型.这意味着像noneOf这样的方法只能返回EnumSet<?>,这不是很有用.

通过声明一个类型变量E并将其限定为扩展Enum<E>Class<E>的使用迫使您传递enum类型and,然后返回EnumSet<E>.

Java相关问答推荐

是否有一种格式模式,可以在除0之外的数字前面有正负符号?

Android视图覆盖不阻止点击它后面的控件

使用包私有构造函数强制子类Java类

Springdoc Whitelabel Error Page with Spring V3

缩小画布比例后更改滚动窗格的内部大小

@org.springframework.beans.factory.annotation.Autowired(required=true)-注入点有以下注释:-SpringBoot

JVM会优化这个数学运算吗?

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

在Spring Boot中使用哪个Java类来存储创建时间戳?

使用Jolt将字段转换为列表

如何在一行中使用Dijkstra中的Java Stream

对从Spring Boot 3.1.5升级到3.2.0的方法的查询验证失败

如何在不作为类出现的表上执行原生查询?

组合连接以从两个表返回数据

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

如何通过Java java.lang.Foreign API访问本机字节数组

如何将RESTAssured';S的Http标题转换为<;字符串、字符串和>的映射?

Intellij 2023 IDE:始终在顶部显示菜单栏

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

如何在Java中立即显示ProgressBar对话框?