gpt4 book ai didi

scala - 使用新的反射API,如何找到类的主构造函数?

转载 作者:行者123 更新时间:2023-12-04 17:36:45 26 4
gpt4 key购买 nike

你可以像这样获得一个类的所有构造函数:

import scala.reflect.runtime.universe._

val ctor = typeOf[SomeClass].declaration(nme.CONSTRUCTOR).asTerm.alternatives

有没有办法知道哪个是主构造函数?它总是列表中的第一个吗?
万一会发生什么 SomeClass是在 Java 中定义的,其中不存在主构造函数的概念?

最佳答案

是的, MethodSymbolApi 上有一个方法叫 isPrimaryConstructor这正是这样做的:

val primary: Option[MethodSymbol] = typeOf[SomeClass].declaration(
nme.CONSTRUCTOR
).asTerm.alternatives.collectFirst {
case ctor: MethodSymbol if ctor.isPrimaryConstructor => ctor
}

对于 Java 类,您将获得源文件中定义的第一个构造函数。

关于scala - 使用新的反射API,如何找到类的主构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16496411/

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