简体   繁体   中英

Inner class vs public inner class in Java

I realized inner classes can be declared as public. What are practical use cases of public inner classes and how are they different than inner classes declared without public keyword?

public class OuterClass{
    class InnerClass{

    }
}

public class OuterClass{
    public class InnerClass{

    }
}

The difference is when passing an instance through a method/constructor.

Here is some code to show what I mean.

Class com.test.OutterClass.

package com.test;

public class OutterClass {

    // public class
    public class InnerClass {

    }
    
    // not public class
    class InnerClass1 {

    }
}

Class 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) {
    
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM