私はscalaが新しく、簡単な新しいアクセス可能な定数を簡単に追加できる構造が必要です。このような 何か:Scala:個別のアクセスを持つ定数のリスト
object Constants {
val A = Something(...)
val B = Something(...)
val C = Something(...)
// ...
val listOfConstants = (A, B, C, ...)
}
しかし、手動でリストに定数を追加する必要はありません。 私は地図を検討したが、これはそれが難しいの定数を アクセスするためになるだろうと私はこれを書いてしまった:
def getElements[T : ClassTag](c : Any) : Set[T] = {
var result : Set[T] = Set()
for (field <- c.getClass.getDeclaredFields) {
field.setAccessible(true)
field.get(c) match {
case t: T => result += t
case _ =>
}
}
result
}
をしてから、この
val listOfConstants = getElements[Something](Constants)
のような構造のために次の行を使用して、このAは汚い解決策?より良い選択肢はありますか?
おかげで、私の場合には 'Something'は...様々なサブタイプとすることができるA、B、C、から抽象型です。私の知る限り、列挙型は拡張できません。 – ChrisU
Java enumはインターフェイスを実装できます。助けてくれますか? – radumanolescu