Tag: enums

Java中的最大枚举元素数

Java中枚举允许的最大元素数是多少? 我想找出switch语句中的最大个案数。 由于switch中允许的最大基本类型是int,因此我们有-2,147,483,648到2,147,483,647的情况和一个默认情况。 但是也允许枚举…所以问题..

在Java中使用嵌套的枚举类型

我有一个涉及嵌套枚举的数据结构,这样我就可以执行以下操作: Drink.COFFEE.getGroupName(); Drink.COFFEE.COLUMBIAN.getLabel(); 如果有方法声明: someMethod(Drink type) someOtherMethod(DrinkTypeInterface type) 然后我可以说(适当地): someMethod(Drink.COFFEE) someOtherMethod(Drink.COFFEE.COLUMBIAN) 这就是我提出的: public enum Drink { COFFEE(“Coffee”); private String groupName; private Drink(String groupName) { this.groupName = groupName; } public enum Coffee implements DrinkTypeInterface { COLUMBIAN(“Columbian Blend”), ETHIOPIAN(“Ethiopian Blend”); private String label; private Coffee(String label) { this.label = label; } public String getLabel() { return this.label; […]

使用Spring IoC设置枚举值

有没有办法在构建时通过Spring IoC设置这样的枚举值? 我想要做的是在类加载时注入下面的代码片段中硬编码的值: public enum Car { NANO (“Very Cheap”, “India”), MERCEDES (“Expensive”, “Germany”), FERRARI (“Very Expensive”, “Italy”); public final String cost; public final String madeIn; Car(String cost, String madeIn) { this.cost= cost; this.madeIn= madeIn; } } 假设应用程序必须部署在德国,Nanos是“几乎免费”,或者在印度,法拉利是“负担不起”。 在这两个国家,只有三辆汽车(确定性集),不多也不少,因此是枚举,但它们的“内在”值可能不同。 因此,这是不可变的上下文初始化的情况。

使用@ElementCollection映射Set

我有以下枚举: package ir.raysis.tcs.rule.days; public enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } 我尝试将其映射为Set天,如下所示: @ElementCollection(targetClass = Days.class) @JoinTable(name = “days”,joinColumns = @JoinColumn(name = “rule_id”)) @Column(name =”daysOfWeek”, nullable = false) @Enumerated(EnumType.STRING) private Set days = new HashSet(); 但是,它会引发以下exception: Initial SessionFactory creation failed.org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: rule, for columns: [org.hibernate.mapping.Column(days)] […]

Lambda在经典的Operation enum例子中

正如你们许多人所知,有一个典型的Operation enum例子(现在使用Java 8标准接口),如下所示: enum Operation implements DoubleBinaryOperator { PLUS(“+”) { @Override public double applyAsDouble(final double left, final double right) { return left + right; } }, MINUS(“-“) { @Override public double applyAsDouble(final double left, final double right) { return left – right; } }, MULTIPLY(“*”) { @Override public double applyAsDouble(final double left, final double right) […]

如何使用Mockito / Powermock模拟枚举单例类?

我不确定如何模拟枚举单例类。 public enum SingletonObject{ INSTANCE; private int num; protected setNum(int num) { this.num = num; } public int getNum() { return num; } 我想在上面的例子中存根getNum(),但我无法弄清楚如何模拟实际的SingletonObject类。 我认为使用Powermock准备测试会有所帮助,因为枚举本身就是最终的。 //… rest of test code @Test public void test() { PowerMockito.mock(SingletonObject.class); when(SingletonObject.INSTANCE.getNum()).thenReturn(1); //does not work } 这是使用PowerMockMockito 1.4.10和Mockito 1.8.5。

使用Java 8 Stream API查找枚举值

假设有一个名为Type的简单枚举,如下所示: enum Type{ X(“S1”), Y(“S2”); private String s; private Type(String s) { this.s = s; } } 使用for-loop的静态方法(假设该方法在enum中定义)可以轻松地找到给定s的正确枚举,例如: private static Type find(String val) { for (Type e : Type.values()) { if (esequals(val)) return e; } throw new IllegalStateException(String.format(“Unsupported type %s.”, val)); } 我认为用Stream API表示的function等价物将是这样的: private static Type find(String val) { return Arrays.stream(Type.values()) .filter(e -> esequals(val)) […]

枚举:为什么? 什么时候?

我是一名即将gradle的计算机科学专业的学生,​​在我的编码生涯中,我发现很少有例子,除了用于表示标准牌组面部的规范案例之外。 你知道在日常编码中使用枚举的任何巧妙方法吗? 为什么枚举如此重要,在什么情况下应该能够确定构建枚举是最好的方法?