gpt4 book ai didi

Scala 反射在运行时访问所有公共(public)字段

转载 作者:行者123 更新时间:2023-12-04 03:21:07 27 4
gpt4 key购买 nike

给定以下类层次结构:

class A {
val x = 3
val y = 4
}

class B extends A {
val z = 5
}

假设我有一个 B 的实例,但不知道其类层次结构的编译时知识,并且希望能够报告如下内容:
Class: B
val[x]: 3
val[y]: 4
val[z]: 5

使用 Scala 反射的最佳方法是什么?

谢谢
德斯

最佳答案

简单来说:

import scala.reflect.runtime.universe._

val a = new A
val rm = scala.reflect.runtime.currentMirror
val accessors = rm.classSymbol(a.getClass).toType.members.collect {
case m: MethodSymbol if m.isGetter && m.isPublic => m
}
val instanceMirror = rm.reflect(a)
for(acc <- accessors)
println(s"$a: ${instanceMirror.reflectMethod(acc).apply()}")

关于Scala 反射在运行时访问所有公共(public)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465661/

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