gpt4 book ai didi

Scala Class.getFields

转载 作者:行者123 更新时间:2023-12-04 04:57:49 25 4
gpt4 key购买 nike

对于我的应用程序,我需要能够找到类型(不是实例)的字段列表以及运行时这些字段的类型。到目前为止,我只能获得一个包含classOf[MyCaseClass].getMethods的getter的case类的方法列表,而简单类没有任何用处。我想念什么吗?是否有用于此类目的的反射库?怎么做正确?

最佳答案

使用Scala 2.10反射:

scala> import reflect.runtime.{universe => ru}
import reflect.runtime.{universe=>ru}
scala> trait A { val field1: Int; val field2: Char; def meth1: Int }
defined trait A
scala> val fieldSymbols = ru.typeOf[A].members.collect{ case m: ru.MethodSymbol if m.isGetter => m }
fieldSymbols: Iterable[reflect.runtime.universe.MethodSymbol] = List(value field2, value field1)

返回的符号包含所有类型信息,例如:
scala> fieldSymbols.map(_.typeSignature)
res16: Iterable[reflect.runtime.universe.Type] = List(=> scala.Char, => scala.Int)

关于Scala Class.getFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com