相关疑难解决方法(0)

如何使用堆栈跟踪或反射找到方法的调用者?

我需要找到一个方法的调用者.是否可以使用堆栈跟踪或反射?

java stack-trace

378
推荐指数
8
解决办法
25万
查看次数

使用带注释的方法时使java编译器发出警告(如@deprecated)

假设我定义了一个名为的自定义注释@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 compiler-construction annotations deprecated

12
推荐指数
1
解决办法
1526
查看次数

从类名获取Java源代码

有没有办法从类名中获取Java源代码?

例如,如果我可以访问带有类的库java.io.File,我想要它的源代码.

我正在研究一种解析器,我需要在执行时使用源代码.我还要递归搜索它.

说上面提到的类有这个方法:

int method (User user) {...}
Run Code Online (Sandbox Code Playgroud)

我需要获取其User源代码,依此类推及其内部类.

java reflection reverse-engineering class

3
推荐指数
1
解决办法
7566
查看次数