Java Enum:在一个枚举中包含多个字符串

时间:2014-09-12 11:34:58

标签: java enums

我是新学生java学习它的基础知识

我的目标是创建一个Enum,其中包含各种类别,如电子邮件,用户名,密码,MaterialType等。 此外,我希望在一个类别中我可以声明各种字符串,我的示例代码如下:

public enum MyEnums {
    Usernames
    {
        public String toString()
        {
            return "This is a GmailUsername";
        }
        /*public String toString()
        {
            return "This is a GalleryComment";
        }*/
    },
    Password
    {
        public String toString()
        {
            return "This is a public password";
        }
    /*  public String GmailPassword()
        {
            return "This is a Gmail Password";
        } */

    },
    Emails
    {
        public String toString()
        {
            return "This is a public contact email address";
        }
        /* public String EmailAccount()
        {
            return "This is a public Email Account address";
        } */

    },
    PhoneNumbers
    {
        public String toString()
        {
        return "This is Phonenumber";
        }
        /*  public String Phone()
        {
            return "This is a phone number";
        }*/
        }
    }

我将代码称为

public static void main (String args[])
   {

       System.out.println(MyEnums.Emails);
       System.out.println(MyEnums.Usernames );
       System.out.println(MyEnums.PhoneNumbers);
       System.out.println(MyEnums.Password);

   }

我的问题是为什么使用第二个字符串类型函数会给出错误,例如在GmailPassword()的密码类别中,为什么它不起作用。

是否还有其他方法可以按类别方式在枚举中声明多个字符串,例如

public Enum myEnum{
Category1
{
"String 1","String2",......."String N"
}
.......
.......
.......
.......
CategoryN
{
"String 1","String2",......."String N"
}

3 个答案:

答案 0 :(得分:3)

也许这会有帮助吗?

 public enum MyEnum {
    Emails("mail1", "mail2", "mail3"), 
    Usernames("username1", "username2"), 
    CategoryN("a", "b", "c");

    private String[] strings;

    private MyEnum(String... strings) {
        this.strings = strings;
    }

    @Override
    public String toString() {
        return Arrays.toString(strings);
    }

    public String getString(int index) {
        return strings[index];
    }

}

主要

    public static void main(String[] args) {
        System.out.println(MyEnum.Emails);  //[mail1, mail2, mail3]

        System.out.println(MyEnum.Emails.getString(1)); //mail2
    }

答案 1 :(得分:1)

您可以使用Objects而不仅仅使用字符串创建枚举。这样,您就可以以干净的方式访问这些对象的所有属性。

答案 2 :(得分:1)

在我看来,除了包含类别的枚举外,您还应该拥有一个界面来制作每个类别的枚举工具。这样你就有了N个枚举,每个枚举都实现了类别接口,并且在每个枚举中都有你的字符串作为枚举常量。