enum generalInformation {
NAME {
@Override
public String toString() {
return "Name";
}
},
EDUCATION {
@Override
public String toString() {
return "Education";
}
},
EMAIL {
@Override
public String toString() {
return "Email";
}
},
PROFESSION {
@Override
public String toString() {
return "Profession";
}
},
PHONE {
@Override
public String toString() {
return "Phone";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有这些信息可用于枚举.
print.generalInformation?那输出:
姓名
教育
电邮
电话
generalInformation作为另一个函数中的arg 传递?Ste*_*lly 27
System.out.println(java.util.Arrays.asList(generalInformation.values()));
Run Code Online (Sandbox Code Playgroud)
你的第二部分...... interface和a或a一样class
Jon*_*eet 14
首先,我将重构你的枚举以在构造函数参数中传递字符串表示.该代码位于底部.
现在,要打印所有枚举值,您只需使用以下内容:
// Note: enum name changed to comply with Java naming conventions
for (GeneralInformation info : EnumSet.allOf(GeneralInformation.class)) {
System.out.println(info);
}
Run Code Online (Sandbox Code Playgroud)
使用的替代方法EnumSet是使用GeneralInformation.values(),但这意味着每次调用时都必须创建一个新数组,这对我来说是浪费.诚然调用EnumSet.allOf需要一个新的对象,每次过......如果你这样做是一个很大和关心的性能,你总是可以它缓存起来.
在参数方面,您可以GeneralInformation像任何其他类型一样使用:
public void doSomething(GeneralInformation info) {
// Whatever
}
Run Code Online (Sandbox Code Playgroud)
用一个值调用,例如
doSomething(GeneralInformation.PHONE);
Run Code Online (Sandbox Code Playgroud)
使用构造函数参数进行重构
public enum GeneralInformation {
NAME("Name"),
EDUCATION("Education"),
EMAIL("Email"),
PROFESSION("Profession"),
PHONE("Phone");
private final String textRepresentation;
private GeneralInformation(String textRepresentation) {
this.textRepresentation = textRepresentation;
}
@Override public String toString() {
return textRepresentation;
}
}
Run Code Online (Sandbox Code Playgroud)
使用您当前的值,您实际上可以自动将名称转换为标题大小写 - 但从长远来看这不会非常灵活,我认为这个显式版本更简单.
小智 5
从Java 8 开始,我建议使用以下解决方案:
public static String printAll() {
return Stream.of(GeneralInformation.values()).
map(GeneralInformation::name).
collect(Collectors.joining(", "));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52934 次 |
| 最近记录: |