Java学习笔记——静态内部类使用及意义

1、内部类

  内部类是定义在另外一个类中的类,主要原因有:
内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据
内部类可以对同一个包的其他类隐藏

2、静态内部类和非静态内部类最大的区别是:

非静态内部类编译后隐式保存着外部类的引用(就算外部类对象没用了也GC不掉),但是静态内部类没有。

3、静态内部类

在 Java 中,静态内部类(Static Inner Class)是定义在另一个类内部的类,并且使用static关键字修饰。它有以下特点:

  • 独立于外部类实例:静态内部类不依赖于外部类的实例而存在,即使外部类没有被实例化,也可以创建静态内部类的对象这是因为静态内部类和外部类的静态成员一样,都属于类本身,而不是外部类的某个实例。 所以可以直接用

  • 访问权限静态内部类可以访问外部类的静态成员(包括私有静态成员),但不能直接访问外部类的非静态成员。

  • 创建对象方式:创建静态内部类的对象时,需要使用外部类名.静态内部类名的形式。

静态内部类的应用场景(单例模式的实现)

public class Singleton {
    private Singleton() {}
    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }
    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

拼团项目中的静态内部类应用

为什么这里要用静态内部类啊?

  1. 可以封装策略执行过程中要使用到的上下文内容
  2. 可以避免创建外部类的实例是由static修饰的静态内部类,它不依赖于外部类的实例,即不需要创建外部类实例就可以调用方法是(外部类名.静态内部类名)
  3. 这个内部类是工厂类所依赖的一个辅助类,逻辑上归属明确,增强了类结构的内聚性,也便于其他开发者理解其用途。
    1751611555096
posted @ 2025-07-04 14:55  日月既往、不复可追。  阅读(53)  评论(0)    收藏  举报
Fork me on GitHub /*音乐*/ 1 2 3
4