Java 基于实现枚举值的类动态显示枚举值
我正在构建一个JavaFx应用程序。 我想在不同的组合框中动态显示枚举值 例如,在控制器A中,我只想显示枚举值“高”,在控制器B中,我想显示所有枚举值 有人能帮忙吗 谢谢Java 基于实现枚举值的类动态显示枚举值,java,enums,Java,Enums,我正在构建一个JavaFx应用程序。 我想在不同的组合框中动态显示枚举值 例如,在控制器A中,我只想显示枚举值“高”,在控制器B中,我想显示所有枚举值 有人能帮忙吗 谢谢 public enum EnumPrio { High("high"), Medium("medium"), Low("low"); private String prio; EnumPrio(String prio) { this.prio = prio;
public enum EnumPrio {
High("high"),
Medium("medium"),
Low("low");
private String prio;
EnumPrio(String prio) {
this.prio = prio;
}
}
public enum EnumPrio{
高(“高”),
中等(“中等”),
低(“低”);
私人字符串优先级;
EnumPrio(字符串prio){
this.prio=prio;
}
公共静态列表getEnumPrioListByController(字符串控制器){
Stream enumPrioStream=Stream.of(EnumPrio.values());
返回控制器.equals(“A”)?enumPrioStream
.filter(enumPrio->enumPrio.prio.equals(“高”)).collect(Collectors.toList()):enumPrioStream
.filter(enumPrio->!enumPrio.prio.equals(“高”)).collect(Collectors.toList());
}
公共静态void main(字符串[]args){
System.out.println(“enumPrioListForControllerA=“+EnumPrio.getEnumPrioListByController(“A”));
//enumPrioListForControllerA=[高]
System.out.println(“enumPrioListForControllerB=“+EnumPrio.getEnumPrioListByController(“B”));
//enumPrioListForControllerB=[中等,低]
}
}
控制器的任务是选择要查看的模型部分以及查看方式。您可以向枚举中添加一些方法,以方便地按所需方式格式化数据。特别是在您给出的示例中,显示1和3之间的区别。
public enum EnumPrio {
High("high"),
Medium("medium"),
Low("low");
private String prio;
EnumPrio(String prio) {
this.prio = prio;
}
public static List<EnumPrio> getEnumPrioListByController(String controller) {
Stream<EnumPrio> enumPrioStream=Stream.of(EnumPrio.values());
return controller.equals("A")?enumPrioStream
.filter(enumPrio->enumPrio.prio.equals("high")).collect(Collectors.toList()):enumPrioStream
.filter(enumPrio->!enumPrio.prio.equals("high")).collect(Collectors.toList());
}
public static void main(String[] args) {
System.out.println("enumPrioListForControllerA="+EnumPrio.getEnumPrioListByController("A"));
// enumPrioListForControllerA=[High]
System.out.println("enumPrioListForControllerB="+EnumPrio.getEnumPrioListByController("B"));
// enumPrioListForControllerB=[Medium, Low]
}
}