2017-02-28 23 views
1

我想安全地得到一个基于值的枚举。如何安全地初始化一个基于int值的Enum?

object UserType extends Enumeration { 
    type UserType = Value 
    val Anonymous, Member, Paid = Value 
} 

如果我做的:

UserType(100) 

我得到一个错误:

java.util.NoSuchElementException: key not found: 100 
    at scala.collection.MapLike$class.default(MapLike.scala:228) 
    at scala.collection.AbstractMap.default(Map.scala:59) 
    at scala.collection.mutable.HashMap.apply(HashMap.scala:65) 
    at scala.Enumeration.apply(Enumeration.scala:114) 
    ... 32 elided 

有没有一种类型安全的方式做到这一点?

+1

'Fraid not;你必须自己处理或包装异常。 – Yawar

回答

0

你可以尝试在Enum的ValueSet上使用find,然后得到一个选项。如果该值不存在,您将得到一个None值(使用getOrElse在此非常方便)。

例子:

UserType.values.find(_ == 100) 

我真的建议你也看过this answer说明如何更好的类型安全的枚举建模。

相关问题