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

Ner*_*vic 18 reflection scala

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

Ada*_*ung 15

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

new { def print = ("hello world") }.print
Run Code Online (Sandbox Code Playgroud)

将使用反射.

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

  • +1:这在定义隐式转换时会产生影响,因此值得单独指出.简而言之,总是在`implicit`函数之外定义一个*named*类,并定义一个*separate*implicit函数来转换为该类. (4认同)

Ken*_*oom 10

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


Itt*_*ayD 5

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


Ken*_*oom 5

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

type T = { def startsWith(x:String):Boolean }
def doSomethingWith(x:T) = x.startsWith("abc")
doSomethingWith("abcdef")
Run Code Online (Sandbox Code Playgroud)

  • OP特别提到结构类型并询问其他示例. (2认同)
  • 是的,我可能应该得到明确的暗示.除此之外,你们所有人都应该知道,在首页的问题列表中,StackOverflow并没有告诉你原始的海报,而是告诉你最后一个回答(或者甚至评论过)这个问题的人.如果您向上滚动并查看问题,它会告诉您原始海报是谁(右侧),以及最后一个编辑/标记是谁(位于中心). (2认同)