首页 > Java > java教程 > Java中如何从内部类访问外部类?

Java中如何从内部类访问外部类?

Barbara Streisand
发布: 2024-12-14 11:17:11
原创
697 人浏览过

How Can I Access the Outer Class from an Inner Class in Java?

从内部类引用外部类

在提供的代码片段中,您有嵌套类 OuterClass 和 InnerClass。您的目标是从内部类(InnerClass)的实例访问父类(OuterClass),而不修改内部类的代码。

使用 OuterClass.this

在 InnerClass 中,您可以使用表达式 OuterClass.this 引用 OuterClass 的封闭实例。该表达式限定 this 关键字以指示封闭实例。这是代码的修改版本:

public class OuterClass {

    public class InnerClass {
        private String name = "Peakit";
        
        public OuterClass outer() {
            return OuterClass.this;
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        InnerClass inner = outer.new InnerClass();
        
        OuterClass anotherOuter = inner.outer();

        if(anotherOuter == outer) {
             System.out.println("Was able to reach out to the outer object via inner !!");
        } else {
             System.out.println("No luck :-( ");
        }
    }
}
登录后复制

运行此代码时,InnerClass 中的outer() 方法返回 OuterClass 的封闭实例,然后您可以将其与原始 OuterClass 实例进行比较。

包级访问(不推荐)

通过实验,发现持有引用的字段外部类具有包级访问权限。这意味着您可以在技术上通过反射访问外部类:

Field field = InnerClass.class.getDeclaredField("this");
field.setAccessible(true);
OuterClass outer = (OuterClass) field.get(inner);
登录后复制

注意: Java 语言规范不鼓励这种方法,并且在不同的 Java 版本中可能不可靠。

以上是Java中如何从内部类访问外部类?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板