Java语言怎么才能知道自己函数是被哪个函数调用的,怎么在函数里改变外面的函数的调用的代码和参量呢?完全没有思路,具体用什么库实现?
可以通过获取当前线程的堆栈轨信息,从中提取出调用函数的信息,
效果图:
public class CallerInfo {
public static void main(String[] args) {
callerMethod("Hello, world!");
}
public static void callerMethod(String message) {
// 获取当前线程的堆栈轨迹
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
if (stackTrace.length > 2) {
// 调用者所在的堆栈轨迹元素
StackTraceElement callerStackFrame = stackTrace[2];
// 获取调用者的类名和方法名
String className = callerStackFrame.getClassName();
String methodName = callerStackFrame.getMethodName();
System.out.println("Caller Class: " + className);
System.out.println("Caller Method: " + methodName);
// 在这里可以根据需要做进一步的处理,例如调用其他方法
calledMethod(message);
} else {
System.out.println("Unknown caller");
}
}
public static void calledMethod(String message) {
System.out.println("Called Method: " + message);
}
}
浅析:
代码里在callerMethod 中调用了 calledMethod,并将参数值传递给了calledMethod . 其实你应该可以读的懂
这个就要用到Java反射;你可以去看看Java反射具体内容
人家都是尽量的解耦,尽量不要去管外面到底是谁在调用自己
你怎么反其道而行之
说说你到底要实现什么最终目的,不要老纠结于自己想出来的好办法而不顾目的