【发布时间】:2017-02-15 17:33:55
【问题描述】:
我正在尝试编写一个方面来捕获所有方法的执行并检索调用方法的行号。 例如,如果我有:
public class MyMainClass {
public static void main(String[] args){
MyArray m = new MyArray(5);
m.setValue //...
//...
}
}
我想编写一个切入点和一个建议,以获取调用 setValue 方法的行(即第 4 行)而不是实现该方法的源代码行(可通过 thisJoinPoint.getSourceLocation().getLine() 访问)。
有没有办法做到这一点? 谢谢!
更新:我刚刚发现这段代码:
StackTraceElement[] trace = Thread.currentThread().getStackTrace();
System.out.println("[AspectJ]LineNumber: " + trace[trace.length-1].getLineNumber());
打印最后一个方法调用的行号,问题是方法实现内部有方法调用时没有用(因为那样的话我应该减少跟踪元素位置,但我不知道如何理解什么时候做)。
【问题讨论】:
-
我已重新格式化您的代码。请学习如何使用语法进行代码格式化和语法高亮。感谢并欢迎使用 StackOverflow。
-
别担心,如果您花时间,您将了解 Java 和 AspectJ。 P.S.:我的击剑比你的编程更糟糕。 ;-)
-
@kriegaex:对不起,我将了解如何格式化代码和使用语法高亮。而且……这里真的比擅长编程更重要! ;D