gpt4 book ai didi

scala - 嵌套对象名称

转载 作者:行者123 更新时间:2023-12-02 05:39:52 25 4
gpt4 key购买 nike

我想知道类中给定对象的名称

class B {
abstract class F{
def name = getClass.getSimpleName
}
object FI extends F
}

val b = new B
println(b.FI)

在 Scala 2.9.1 中它打印 B$FI$

在 Scala 2.9.2 中它打印 FI$

我真正想要的是“FI”。获得 FI 并确保它在未来的 scala 版本中不会改变的最佳方法是什么?是否有一些反射(reflection)支持可以帮助我?

最佳答案

这可以通过 Scala 2.10 中引入的新反射 API 实现,如下所示:

scala> import scala.reflect.runtime.universe._
import scala.reflect.runtime.universe._

scala> val mirror = runtimeMirror(getClass.getClassLoader)
mirror: reflect.runtime.universe.Mirror = JavaMirror with scala.tools.nsc.interpreter.IMain$TranslatingClassLoader@609a5d54 of type class scala.tools.nsc.interpreter.IMain$TranslatingClassLoader with classpath <unknown>

scala> mirror.reflect(new B().FI).symbol.name
res24: reflect.runtime.universe.Name = FI

关于scala - 嵌套对象名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159365/

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