美文网首页一些收藏
说说 Java 的静态内部类

说说 Java 的静态内部类

作者: deniro | 来源:发表于2022-04-05 18:14 被阅读0次

    Java 的静态内部类就是定义在一个类的内部,并且标注为 static 的类。由于类是静态的,所以不需要通过外围类的实例来创建。下面是一个示例:

    public class Outer {
    
        private static final Logger log = LoggerFactory.getLogger(Outer.class);
    
        private static class Inner {
            public int value() {
                return 1;
            }
        }
    
        public static Inner inner() {
            return new Inner();
        }
    
        public static void main(String[] args) {
            Inner c = inner();
            log.info("c.value() -> {}。", c.value());
        }
    }
    

    外围类 Outer 定义了一个私有、静态内部类 Inner。然后定义了一个静态方法 inner(),返回 Inner 类。这个静态方法 inner() 就是外部类调用该内部类的桥梁。

    静态内部类与非静态内部类之间的比较:

    比较 静态内部类 非静态内部类
    创建 外围类.方法 外围类实例.方法
    访问外围类 能访问静态属性,不能访问非静态属性 不能访问静态属性,可以访问非静态属性

    比如在外围类 Outer 中分别定义了一个私有、非静态属性 i,与一个私有、静态属性 j。那么静态内部类 Inner 只能访问 私有、静态属性 j:

    public class Outer {
    
        private static final Logger log = LoggerFactory.getLogger(Outer2.class);
    
        // Inner 不可访问
        private int i;
    
        // Inner 可访问
        private static int j;
    
        private static class Inner {
            public int value() {
    
                return 1;
            }
        }
    }
    

    参考:
    BruceEckel, 埃克尔, 陈昊鹏. Java编程思想[J]. 机械工业出版社, 2007. p201-202.

    相关文章

      网友评论

        本文标题:说说 Java 的静态内部类

        本文链接:https://www.haomeiwen.com/subject/ehaksrtx.html