dabocaiqq 2023-07-12 20:06 采纳率: 52.1%
浏览 14
已结题

Java语言怎么样对函数进行反调用,即函数内判断谁在调用自身

Java语言怎么样对函数进行反调用,即函数内判断谁在调用自身,只允许一些特定的函数调用,不允许其余的函数调用,怎么实现

  • 写回答

2条回答 默认 最新

  • 全栈若城 新星创作者: 编程技术、移动开发技术领域 2023-07-12 20:13
    关注

    如图 :

    img

    代码如下 :

    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条)

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月12日