小编ie8*_*888的帖子

在编译时列出包中的类

我试图在编译时列出包中的所有类。

让我们定义一个具有以下结构的项目:

com.main
   Main.scala
com.package
   Method.scala
com.package.method1
   Method1.scala
com.package.method2
    Method2.scala
Run Code Online (Sandbox Code Playgroud)

在哪里:

方法.scala

abstract class Method(val name: String) {
}
Run Code Online (Sandbox Code Playgroud)

Method1.scala 和 Method2.scala (更改各自的名称)

class Method1 extends Method(name = "Method1") {
}
Run Code Online (Sandbox Code Playgroud)

我想从 Main.scala 获取 com.package._ 中定义的类列表,如下所示:

object Main() {
    val names = List("Method1", "Method2")
}
Run Code Online (Sandbox Code Playgroud)

我可以对名称进行硬编码(如图所示),但我想知道是否可以在编译时获取这些名称。我知道在运行时可以使用http://software.clapper.org/classutil/

jvm scala scala-macros scala-reflect

5
推荐指数
0
解决办法
269
查看次数

标签 统计

jvm ×1

scala ×1

scala-macros ×1

scala-reflect ×1