所以我有一个Scala枚举对象:
object KnotType extends Enumeration {
type KnotType = Value
val STOPPER, HITCH, ENDLOOP, MIDLOOP, ADJUSTABLELOOP, BEND, BINDING = Value
}
import KnotType._
object AnotherType extends Enumeration {
... }
import AnotherType ._
我想初始化一个新的ValueSet实例,仅存在一个值。用最短的速记:
val eKnots = STOPPER + HITCH
eKnot: KnotType.ValueSet = KnotType.ValueSet(STOPPER , HITCH)
很有魅力。然而,要从一个值创建一个值集,我必须更加明确:(尤其是在枚举对象类上有多个)
从一个值创建枚举会产生一个值(如预期的那样),但不是我想要的(一个值集):
val eKnot = STOPPER
eKnot: KnotType.Value = STOPPER
常规方法是:
val eKnot = KnotType.ValueSet(STOPPER)
eKnot: KnotType.ValueSet = KnotType.ValueSet(STOPPER)
不雅观的方式:
val eKnot = STOPPER + STOPPER
eKnot: KnotType.ValueSet = KnotType.ValueSet(STOPPER)
冗长的方法——工作正常,但我追求简洁
val eKnot = KnotType.ValueSet.empty + STOPPER
eKnot: KnotType.ValueSet = KnotType.ValueSet(STOPPER)
我还能用其他速记法吗?i、 e val eKnot=塞子/一些简单的东西/
您可以创建自己的扩展方法(类似于JavaConverters):
implicit class ValueToValueSet(v: Value) {
def toSet: ValueSet = ValueSet(v)
}
val eKnot: KnotType.ValueSet = STOPPER.toSet
或隐式转换(我认为这与JavaConversions类似,因此不推荐):
implicit def valueToValueSet(v: Value): ValueSet = ValueSet(v)
val eKnot: KnotType.ValueSet = STOPPER
我发现了Clang-12、Clang-13和Clang-14在
问题内容: 假设我有一个枚举,然后实例化一个天数组。 如何将一天(例如)设置为所有“天”的默认值?如果如上所述进行设置,则所有元素均为空。我希望通过枚举表现得更像ints和Strings,它们分别初始化为0和“”。 问题答案: 正如其他人所说,枚举是引用类型-它们只是特定类的编译器语法糖。JVM不了解它们。这意味着该类型的默认值为null。当然,这不仅会影响数组- 这意味着类型为枚举的任何字段的初
我正在尝试从整数值反序列化scala枚举。 当我尝试反序列化这个字段时,它会抛出一个错误-的值com.example.TestEnum$JsonToken.VALUE_NUMBER_INT 我看到jackson doc建议在java中使用JsonCreator,但是没有提到scala enum。 我使用默认的ScalaMapper没有任何定制在这里。
假设我有这样的枚举 我也有一个类,我想扩展有序[SimpleEnum] 所以在SimpleClass中,我只需要获取附加到相应SimpleEnum val的值。 在java中,我能够声明一个变量的枚举和访问一个实际的值对应于它的这个var,在scala我正在寻找一种方法来获取枚举的实例,并接触到它的值。
问题内容: 我有几个需要国际化的枚举(我需要将枚举值转换为某些语言才能在jsf页面中显示)。考试列举: 翻译将是例如/ 转换应存储在MessageBundle(属性文件)中。我正在寻找一个简单,通用的解决方案(最好是无需在所有枚举中编写额外的代码),而该解决方案在jsf方面并不需要太多。仅提及它,当然,两个不同的枚举可能具有相同的枚举值(例如,类似的值在不同的枚举中具有不同的含义)。 我想出的解决
据我所知,在Java11中,这两个操作可以在一行中完成,不是吗?