Java语言怎么样对函数进行反调用,即函数内判断谁在调用自身,只允许一些特定的函数调用,不允许其余的函数调用,怎么实现
2条回答 默认 最新
关注如图 :

代码如下 :
public class FunctionCaller { public static void main(String[] args) { // 调用函数A functionA(); } public static void functionA() { if (isAllowedCaller()) { System.out.println("Function A 被允许的函数调用"); } else { System.out.println("Function A 被一个不允许的函数调用"); } } public static boolean isAllowedCaller() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); for (int i = 2; i < stackTrace.length; i++) { String callerMethodName = stackTrace[i].getMethodName(); // 判断允许调用的函数 if (callerMethodName.equals("functionB") || callerMethodName.equals("functionC")) { return true; } } return false; } public static void functionB() { functionA(); // 允许调用functionA } public static void functionC() { functionA(); // 允许调用functionA } public static void functionD() { functionA(); // 不允许调用functionA } }思路分析 :
使用Thread.currentThread().getStackTrace()方法获取当前线程的方法调用栈信息,通过分析方法调用栈的信息,来判断哪些函数调用了当前函数,本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用