我是新学生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"
}
答案 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个枚举,每个枚举都实现了类别接口,并且在每个枚举中都有你的字符串作为枚举常量。