java - 从内部类的对象访问外部类函数

标签 java nested nested-class

我知道有人提出了与此问题相关的类似问题,但是我无法解决我的问题。我尝试将问题简化为以下代码 -

class Outer
{
    Outer()
    {}

    class Inner
    {
        Inner()
        {}
    }

    void func()
    {
        System.out.println("Outer");
    }
}

public class Nested
{
    public static void main(String args[])
    {
        Outer oo = new Outer();
        Outer.Inner ii = oo.new Inner();

//          ii.func(); I know this won't work


    }
}

我可以从内部类“ii”的对象调用外部类函数“func()”吗??如果是,怎么办?

最佳答案

简短回答:对 Outer.this 的引用是 Inner 中的 private,因此您无法访问对 Outer< 的引用 实例来自 Inner 的实例。

您可以这样导出此引用:

class Outer {
    Outer() {
    }

    class Inner {
        Inner() {
        }

        public Outer getOuter() {
            return Outer.this;
        }
    }

    void func() {
        System.out.println("Outer");
    }
}

然后你可以简单地这样做:

ii.getOuter().func();

关于java - 从内部类的对象访问外部类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29863903/

相关文章:

html - 如何将样式应用于 HTML 子文档?

Java双向链表——两个相邻节点相等

Java定时器任务: Adjusting daylight saving time

java - 静态嵌套类如何是静态的?如果是的话,为什么我们必须使用 new 来初始化它?

sql - 在 SQL Server 2008 中使用嵌套 CASE 语句

Java:静态嵌套类和反射: "$"与 "."

c# - 类特定常量是否应该包含在嵌套类中?

java - 将一个对象转换为它的最低类

java - 范围为 (A..Z, 0..9) 和标点符号的随机字符生成器

c++ - 嵌套类和构造函数调用理解