如果我编写了要应用于Scala对象或类的Scala宏,是否可以在宏中获取该带注释的实体的扩展类路径? (出于某种原因,我最终希望将它作为字符串,由宏写入文件中。)
我需要包含该实体的com.foo.bar程序包,或者需要一种从带注释的MyClass直接获取扩展的com.foo.bar.MyClass类路径的方法。
答案 0 :(得分:0)
好吧,不确定这是否是最好的方法,但是对我有用的解决方案是使用准引用并使用上下文来编译“探针”类:
导入c.universe._ val probe = c.typecheck(q“”“ {class $$$$ Pr0bE $$$$;()}”“”)
然后可以请求该“探针”(在我的情况下是一个程序包)的所有者,然后跟踪所有者直至“根”,从而从该根和被通知者的名称构造出完全合格的类路径。