首页 > 解决方案 > Java中的内部类与公共内部类

问题描述

我意识到内部类可以声明为公共的。公共内部类的实际用例是什么?它们与没有公共关键字声明的内部类有何不同?

public class OuterClass{
    class InnerClass{

    }
}

public class OuterClass{
    public class InnerClass{

    }
}

标签: java

解决方案


不同之处在于通过方法/构造函数传递实例时。

这是一些代码来说明我的意思。

com.test.OutterClass 类。

package com.test;

public class OutterClass {

    // public class
    public class InnerClass {

    }
    
    // not public class
    class InnerClass1 {

    }
}

com.test2.TestClass 类

package com.test2;

public class TestClass {


     // Works, because OutterClass.InnerClass is public.
     TestClass(OutterClass.InnerClass t) {
     
    }

    // Doesn't work because OutterClass.InnerClass1 is not public.
    TestClass(OutterClass.InnerClass1 t) {
    
    }

}

推荐阅读