是的,我知道在非Python圈子中看来这很懒惰。我问的原因是因为许多Scala库仍然缺乏文档(例如Scala-dbc,但这不是我关注的全部),如果我能够在运行时查看对象/类的属性,我至少可以弄清楚可用的内容。谢谢。
是的,我知道在非Python圈子中看来这很懒惰。我问的原因是因为许多Scala库仍然缺乏文档(例如Scala-dbc,但这不是我关注的全部),如果我能够在运行时查看对象/类的属性,我至少可以弄清楚可用的内容。谢谢。
Scala没有反射API。访问此信息的唯一方式是使用Java反射API。这种方法的缺点是,随着Scala在Java类和接口中表示方式的更改,结构可能会发生改变。
scala> classOf[AnyRef].getMethods
res0: Array[java.lang.reflect.Method] = Array(public final void ...
可以通过ScalaSigParser访问字节码中存在的某些特定类型信息。
import tools.scalap.scalax.rules.scalasig._
import scala.runtime._
val scalaSig = ScalaSigParser.parse(classOf[RichDouble])
这是我使用REPL的主要用途之一。输入对象名称、点号,然后按TAB键,它将显示所有可用的方法。
它并不完美。首先,它显示受保护的方法,除非你正在扩展该类,否则这些方法将不可用。其次,它不会显示通过隐式转换可用的方法。
当然,所有的IDE都能够做到这一点。
val testStr = "Panda"
testStr.getClass.getMethods.foreach(println)
那行吗?
getClass
!你在我整个星期里都去哪了?谢谢! - Jeffrey Benjamin Brown