Хорошо известен факт, что структурные типы реализуются через отражение. Есть ли еще какие-то языковые конструкции, которые используют отражение?
Это тесно связано со структурными типами, но любой экземпляр анонимного объекта, например,
new { def print = ("hello world") }.print
будет использовать отражение.
http://scala -programming-language.1934581.n4.nabble.com / Структурные типы-отражения-td3071599.html
В перечислениях используется отражение, чтобы узнать обо всех возможных значениях перечисления для функции nameOf. (См. Метод populateNameMap в Enumeration.scala ). Это делается один раз, при первом вызове nameOf для определенного типа Enumeration.
nameOf
populateNameMap
Enumeration
Вызов метода в структурных типах зависит от отражения:
type T = { def startsWith(x:String):Boolean } def doSomethingWith(x:T) = x.startsWith("abc") doSomethingWith("abcdef")
Если вы рассматриваете isInstanceOf / asInstanceOf как отражение, то сопоставление с образцом зависит от них
Интерпретатор Scala очень интенсивно использует рефлексию.
Это не языковая конструкция, но ScalaTest включает Suite.execute, которая использует отражение для поиска и вызова методов тестирования.
Suite.execute
Использует ли сопоставление с шаблоном Scala любоеза кадром отражение?