![]() |
1
17
使用 Class#getEnumConstants() 这很简单:
这不是完全类型安全的,因为您可以在没有
|
![]() |
2
10
您可以将此方法粘贴到某些实用程序类中:
资料来源: Examining Enums |
![]() |
3
3
在这里你可以做两件事。第一种(更简单,因此更好)方法是让getStrings()方法获取某个接口的列表,并让枚举实现该接口:
如果您在内部真正关心类型是一个枚举,那么您还可以使用这样一个事实,即所有枚举类型都会自动为内置类型枚举子类化。因此,作为您的示例(免责声明:I 认为 这可以编译,但实际上尚未尝试):
如果您想做一些特别需要枚举的事情(例如,出于某种原因使用枚举映射或枚举集),则第二种形式非常有用;否则,我将使用第一种方法(因为使用该方法,您还可以使用非枚举类型,或者仅使用枚举的子集)。 |
![]() |
4
3
这种方法避免了反思:
在本例中,使用了匿名类型,但它可以是无状态单例或类似的类型。 |
![]() |
5
2
我会使用
|
![]() |
6
1
以下是我的建议: 首先是某个实用程序类中的帮助器方法和静态内部类:
然后将其与枚举一起:
|
![]() |
7
0
|
|
8
0
我在第一次响应时以这种方式编辑了方法,它工作起来没有问题,也没有实现任何接口
|
![]() |
9
-1
(对不起,这是C#。我没有看到这个问题是针对Java的。)
当然,对于Java,所有枚举类型仍然继承自Java.util.enum,因此您可以编写:
因为java.util.Enum实际上并没有实现values(),所以我认为反射是唯一的方法。 |
|
10
-4
来吧,伙计们。。没那么难。我正在使用字符串比较。。但是,如果需要,可以只比较对象类型。
|
![]() |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
![]() |
milczi · Swift通用无强制展开向下投射 6 年前 |
![]() |
bugs · Typescript-泛型类型扩展自身 6 年前 |
![]() |
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 6 年前 |
![]() |
Blankdud · 具有默认数据的通用对象创建方法 6 年前 |
![]() |
Tim Hutchison · 从泛型对象列表中读取泛型值 6 年前 |