考虑一个有很多值的类
class Test {
val a1 = "test1"
val a2 = "test2"
..
..
val a25 = "test25"
}
可以编写这样的函数来访问第n个变量。
def getVar(n: Int, test: Test) = {
test.("test"+n) //something like this to access the nth variable
}
我知道这可以通过集合完成,但我的问题是可以完成这种类型的反射。
答案 0 :(得分:5)
val field = test.getClass.getDeclaredFields.apply(n)
field.setAccessible(true)
field.get(test)
答案 1 :(得分:1)
使用动态
import scala.Dynamic
import scala.language.dynamics
object Test extends Dynamic {
val a1 = "test1"
val a2 = "test2"
val a3 = "test3"
val list = List(a1, a2, a3)
def selectDynamic(s: String) = {
list(s.replace("test", "").toInt-1)
}
}
assert(Test.list(1) == Test.test2)