我希望能够提取对象中声明的所有val的内容,但是我找不到这样做的方法。那么,它甚至可能吗?
例如: 我有一个像这样的对象:
object obj {
val firstField = "I am the first field"
val secondField = "I am the second field"
val thirdField = "I am the third field"
}
我想最终得到这样的序列:
Seq("I am the first field", "I am the second field", "I am the third field")
以下是我的尝试:
obj.getClass.getDeclaredFields.map(field ⇒ field.get())
但是它返回一个错误,告诉我方法get()没有权限访问私有的最终版本,我找不到解决这个问题的方法。
答案 0 :(得分:2)
在这种情况下你可以做obj.getClass.getMethods.map(_.invoke(obj))
做你想做的事情(显然,除了合成的对象之外,你必须想到一些更精细的东西,你的对象有“真正的”方法建模领域)。
另外,我不得不说,你的问题得到了相当冷淡的接受的原因是它有点奇怪。我想不出一个很好的理由做这样的事情会很有用(特别是在一个人不知道怎么做的程度),而我的猜测也是人们对你的问题进行贬低也不能。
更有可能的是,您想到的解决方案对于您要解决的问题是错误的。您可能最好告诉我们真的想要做什么才能与您合作。