Scala:列出不知道对象定义的对象的所有变量的内容

Scala:列出不知道对象定义的对象的所有变量的内容,scala,Scala,我希望能够提取对象中声明的所有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

我希望能够提取对象中声明的所有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")
我想以这样的顺序结束:

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()方法无权访问私有的final val,我也找不到解决这个问题的方法。

粗略地说,scala中的“字段”被建模为方法

在这种情况下,您可以执行
obj.getClass.getMethods.map(u.invoke(obj))
来完成您想要做的事情(显然,如果您的对象除了合成到模型字段的方法之外还有“真实”的方法,那么您还需要考虑一些更详细的方法)

还有,我必须说,你的问题之所以受到冷遇,是因为它有点奇怪。我想不出有什么好的理由做这样的事情会有用(特别是在一个人不知道如何做的情况下),我猜,投票否决你的问题的人也不能


更有可能的是,对于您试图解决的问题,您心目中的解决方案是错误的。你最好告诉我们你真正想做什么。

谢谢,我主要是在试验这种语言,但我确实有一个这样的用例。在我的团队中,我们在一个单独的专用对象中定义常量值。在我的用例中,对象包含存储在conf中的值的路径。现在,当程序启动时,我需要检查conf文件中是否存在对象中描述的路径。每次修改conf时,我都懒得重写一个Seq(路径1,路径2),所以我希望它能够自动处理。由于该程序是一个服务,它是否需要更多的时间并不重要,因为该部分只执行一次。它可以工作,但我必须使用“obj.getClass.getDeclaredMethods.map(u.invoke(obj))”,否则,我从对象继承了基本方法。我不确定“如果配置中存在路径”是什么意思?如果您正在谈论检查配置文件是否存在于给定的路径,那么在加载配置文件时应该检查该路径。如果您的意思是检查config中是否存在引用的属性(或config中的属性引用的文件是否存在),则应在初始化该值时进行检查。不管怎样,我认为没有必要像那样遍历对象的字段。好吧,这不是我目前工作的标准,但我会考虑你的观点。我们检查conf名称空间是否存在,如果不存在,则抛出一个自定义错误,以便我们知道配置存在问题。在加载值时,仍将对其进行检查。