在枚举变量上设置两个不同的值

时间:2017-04-27 08:17:28

标签: java enums

我一直在尝试为枚举变量赋值,但我无法成功。 所以我想要的是这两个值optionOneoptionTwo。 因此,A.valueOf("THIS");会带来值A.getOptionOne()的2和A.getOptionTwo()的4。

从Eclipse我得到一个错误行

"The nested type A cannot hide an enclosing type" on
<< public enum A {THIS("2","4"), IS("4","7"), REAL("12.5","29")}; >>

我想要一些建议:(

//编辑:我将处理它确实无关的错误消息,我想获得在单个枚举变量上设置两个不同值的方法指南。

public class A {

    public enum A {THIS("2","4"), IS("4","7"), REAL("12.5","29")};

    private final String optionOne;
    private final String optionTwo;

    private A(String optionOne, String optionTwo){
        this.optionOne= optionOne;
        this.optionTwo= optionTwo;
    }

    public String getOptionOne(){
        return optionOne;
    }

    public String getOptionTwo(){
        return optionTwo;
    }   
}

2 个答案:

答案 0 :(得分:3)

错误消息告诉您确切的错误:您的枚举定义隐藏了它所在的同名类的名称。

Java的枚举是一种特殊类型的类,其中枚举常量是唯一允许的实例。因此,您不必将枚举包含在另一个类中。只需在枚举定义中提供方法:

O(N^2)

答案 1 :(得分:1)

我认为您对嵌套类型在Java中的工作方式存在误解。在您的示例中,您有一个名为&#39; A&#39;嵌套枚举也叫做&#39; A&#39;。即使Java允许这个名称冲突(它没有),也会令人困惑。哪个&#39; A&#39;我们会在特定情况下讨论吗?

无论如何,在这种情况下你不需要任何嵌套,你只需要定义这样的常规枚举:

apiVersion: batch/v2alpha1

然后你可以说:

$sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,) 
 values (date('m/d/Y H:i:s', strtotime(MyData)),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')";

您可能会发现它对read up on enum definitions很有用。