У меня есть несколько вложенных объектов, таких как:
object Routes {
object admin {
def home = "/admin/home/"
def module(m:Module) = "/admin/module/"+m.code
}
}
Доступно через Routes.admin.module(mymod)
и т. Д.
Учитывая объект Routes, я хочу иметь возможность доступа к объекту admin по его имени "admin", чтобы предоставить его движку шаблонов, который я использую (Freemarker). Это решение, основанное на стандартном API-интерфейсе Java Reflection API, которое, как мне кажется, работает:
val obj = Routes
val key = "admin"
Class.forName(obj.getClass.getName+key+"$").getField("MODULE$").get(null)
Это находит для статического поля Routes$admin$.MODULE$
, где живет одноэлементный объект. Есть ли более аккуратный способ, который не требует внедрения знаний об именах для байт-кода Scala?