哪些Scala功能是使用反射在内部实现的?

时间:2011-01-02 04:31:44

标签: reflection scala

众所周知,结构类型是通过反射实现的。是否有其他语言结构可以使用反射?

6 个答案:

答案 0 :(得分:15)

这与结构类型密切相关,但与任何匿名对象实例密切相关,即

new { def print = ("hello world") }.print

将使用反射。

http://scala-programming-language.1934581.n4.nabble.com/Structural-types-reflection-td3071599.html

答案 1 :(得分:10)

枚举使用反射来查找nameOf函数的枚举的所有可能值。 (请参阅Enumeration.scala中的populateNameMap方法)。这是第一次为特定nameOf类型调用Enumeration时完成的。

答案 2 :(得分:5)

如果将isInstanceOf / asInstanceOf视为反射,则模式匹配依赖于它们

答案 3 :(得分:5)

结构类型中的方法调用取决于反射:

type T = { def startsWith(x:String):Boolean }
def doSomethingWith(x:T) = x.startsWith("abc")
doSomethingWith("abcdef")

答案 4 :(得分:2)

Scala解释器大量使用反射。

答案 5 :(得分:1)

它不是语言构造,但ScalaTest包含Suite.execute,它使用反射来查找和调用测试方法。

Scala的pattern matching是否在幕后使用任何反射?