Grails 2与Grails 3跨类调用私有方法异常问题咨询
Grails跨类调用私有方法的异常现象分析
我在测试多个Grails版本(涵盖Grails 2.5.4、Grails 3.3.2/3/4以及最新版本)时,发现了一个违背Java基础访问权限规范的异常行为:不同类之间竟然可以直接调用对方的私有方法,而且这个问题一直延续到了Grails的最新版本中。
各版本之间的具体差异如下:
Grails 2.5.4:除了能跨类调用私有方法外,还能正常识别并使用被调用类中所有注入的依赖(比如Spring容器管理的Bean)Grails 3.3.x及后续版本:跨类调用私有方法的现象依然存在,但被调用类的依赖不会被注入——这一点符合依赖注入的预期逻辑,但跨类调用私有方法本身还是不符合Java规范
这里需要明确的是:按照Java的核心规范,私有方法的访问权限严格限定在定义它的类内部,外部类根本不应该拥有调用私有方法的能力。所以这种跨类可调用私有方法的行为,本质上是Grails框架处理字节码或方法访问权限时的异常表现。
内容的提问来源于stack exchange,提问作者Kapil Arora
相关产品推荐
相关产品推荐

