我是新来的斯卡拉,我需要一个结构,我可以轻松地添加新的个人访问常量,并遍历所有这些。 事情是这样的:斯卡拉:个人访问常量列表
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)
这是一个脏解决方案?有更好的选择吗?
感谢您的回答,但对我来说'Something'是一个抽象类从A,B,C,......可以是多种亚型。据我所知,枚举不能被扩展。 – ChrisU
Java枚举可以实现一个接口。这会有帮助吗? – radumanolescu