gpt4 book ai didi

java - 获取特定枚举的类型

转载 作者:行者123 更新时间:2023-12-01 17:17:27 25 4
gpt4 key购买 nike

我有一个包含多个枚举的类,如下所示:

public class MyEnumerateClass
{
public enum Enum1
{
enum1Value1,
enum1Value2
}

public enum Enum2
{
enum2Value1,
enum2Value2
}
}

我有一个方法可以采用这样的任何枚举:

 public void GetValue(MyEnumerateClass enumerateField)
{
switch (enumerateField)
{
case enum1Value1:
... do stuff here ...
break;
.......... stuff ..........
}
}

正如我们所理解的,GetValue 允许我接受之前声明的两个值中的任何一个。但我有一个问题:

当我需要检查枚举类型并检查它是Enum1还是Enum2时,我不知道如何处理......

 public void GetType(MyEnumerateClass enumerateField)
{
enumerateField.values(); // To do this I need to know the type of the enumerate
}

那么,如果枚举类型位于 MyEnumerateClass 中,我如何获取它?

最佳答案

每个枚举都有自己的类型(在您的示例中,它们在这方面的行为类似于静态内部类)。

要拥有一个允许两个枚举的方法参数,您必须构建类型层次结构或将 Object 作为参数值。正如您所知,您可以接收哪些可能的类型(MyEnumerateClass $Enum1 或 MyEnumerateClass$Enum2),您可以对参数类型使用instanceof 检查和分支,或者重载两个枚举的方法。

void GetValue(Object o){
if(o instanceof MyEnumerateClass.Enum1) {
switch((MyEnumerateClass.Enum1) o){
case enum1value1: ...
}
} else if (o instanceof MyEnumerateClass.Enum2) {
switch((MyEnumerateClass.Enum2) o){
case enum2value1: ...
}
}
}

class A {
void GetValue(MyEnumerateClass.Enum1 value){}
void GetValue(MyEnumerateClass.Enum2 value){}
}

关于java - 获取特定枚举的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com