我用这种方式铭记历史
|
“三妹,来看下面这个例子。”
public class StaticBlockDemo { public static List “writes 是一个静态的 ArrayList,所以不太可能在声明的时候完成初始化,因此需要在静态代码块中完成初始化。” “静态代码块在初始集合的时候,真的非常有用。在实际的项目开发中,通常使用静态代码块来加载配置文件到内存当中。” 04、静态内部类 “三妹啊,除了以上只写,static 还有一个不太常用的功能——静态内部类。” “Java 允许我们在一个类中声明一个内部类,它提供了一种令人信服的方式,允许我们只在一个地方使用一些变量,使代码更具有条理性和可读性。” “常见的内部类有四种,成员内部类、局部内部类、匿名内部类和静态内部类,限于篇幅原因,前三种不在我们本次的讨论范围之内,以后有机会再细说。” “来看下面这个例子。”三妹有点走神,我敲了敲她的脑袋后继续说。 public class Singleton { private Singleton() {} private static class SingletonHolder { public static final Singleton instance = new Singleton(); } public static Singleton getInstance() { return SingletonHolder.instance; }} “三妹,打起精神,马上就结束了。” “哦哦,这段代码看起来很别致啊,哥。” “是的,三妹,这段代码在以后创建单例的时候还会见到。” “第一次加载 Singleton 类时并不会初始化 instance,只有第一次调用 getInstance()方法时 Java 虚拟机才开始加载 SingletonHolder 并初始化 instance,这样不仅能确保线程安全,也能保证 Singleton 类的唯一性。不过,创建单例更优雅的一种方式是使用枚举,以后再讲给你听。” “需要注意的是。第一,静态内部类不能访问外部类的所有成员变量;第二,静态内部类可以访问外部类的所有静态变量,包括私有静态变量。第三,外部类不能声明为 static。”
“三妹,你看,在 Singleton 类上加 static 后,编译器就提示错误了。” 从表面上看:
往更深层次讲:
从使用层面上讲:
综上:观察者模式和发布订阅模式本质上都有发布订阅的思想,但是又有一定的区别,所以我们不能将二者完全等同起来。
闲聊:冬天到了一起抱团取暖吧~ 大家有任何技术问题、职业发展方向问题都可以加我的个人微信号咨询,想进读者群可以备注”加群“,群里人可好了,微信搜索 smileCoder1024 值得拥有。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
