我想下面的Java代码的斯卡拉模拟实现:
static <T extends Enum> T getEnumByPrefix(String prefix, Class<T> enumClass) {
for (T enumValue : enumClass.getEnumConstants()) {
if (enumValue.name().startsWith(prefix)) {
return enumValue;
}
}
throw new NoSuchElementException();
}
但我不明白如何声明方法scala.Enumeration。
我试过了
def enumByPrefix[T <: Enumeration](prefix: String): T.Value = ...
但是,这并不编译。
我试过了
def enumByPrefix[T <: Enumeration.Value](columnLabel: String): T = ...
但是,这并不编译过。
基本上我想按如下方式使用它:
object PaymentMethod extends Enumeration {
val Insurance, Cash = Value
}
...
val paymentMethod: PaymentMethod.Value = enumByPrefix[PaymentMethod]("Insurance")
(我用byPrefix只是举例,真实的算法会有所不同)。