假设我定义了一个名为的自定义注释@Unsafe.
我想提供一个注释处理器,它将检测对注释方法的引用@Unsafe并打印警告.
例如,鉴于此代码......
public class Foo {
@Unsafe
public void doSomething() { ... }
}
public class Bar {
public static void main(String[] args) {
new Foo().doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
...我希望编译器打印如下:
WARN > Bar.java, line 3 : Call to Unsafe API - Foo.doSomething()
Run Code Online (Sandbox Code Playgroud)
它在精神上非常相似@Deprecated,但我的注释是在传达不同的东西,所以我不能@Deprecated直接使用.有没有办法用注释处理器实现这一目标?注释处理器API似乎更关注应用注释的实体(Foo.java在我的示例中),而不是引用注释成员的实体.
此问题提供了一种使用ASM作为单独构建步骤实现它的技术.但我想知道我是否可以通过javac和注释处理以更自然的方式做到这一点?
有没有办法从类名中获取Java源代码?
例如,如果我可以访问带有类的库java.io.File,我想要它的源代码.
我正在研究一种解析器,我需要在执行时使用源代码.我还要递归搜索它.
说上面提到的类有这个方法:
int method (User user) {...}
Run Code Online (Sandbox Code Playgroud)
我需要获取其User源代码,依此类推及其内部类.