如何在宏中获得Scala宏注释类或对象的扩展类路径



如果我已经编写了一个Scala宏,该宏将应用于Scala对象或类,那么有可能在宏中获得该注释实体的扩展类路径吗?(出于某种原因,我最终希望它作为一个字符串,由宏写入一个文件。(

我需要该实体的封装com.foo.bar包,或者从带注释的MyClass中直接获得扩展的com.foo.bar.MyClass类路径的方法。

好吧,不确定这是否是最好的方法,但对我来说有效的解决方案是使用准引号,使用上下文编译一个"probe"类:

导入c.universe_val probe=c.typecheck(q""{class$$$Pr0bE$$$$;((}""(

然后,可以询问"probe"(在我的情况下是一个包(的所有者,并跟随所有者找到"root",根据它和annote的名称构建annote完全限定的类路径。

最新更新