首页 > 其他分享 >静态内部类的作用

静态内部类的作用

时间:2023-01-12 10:02:06浏览次数:36  
标签:Singleton 内部 静态 private static new 作用

静态内部类是用static修饰的内部类。在jvm层面中,当外部类加载时并不会加载静态内部类。所以静态内部类可以实现懒汉单例模式并保证其线程安全

public class Singleton {
private Singleton() {
}

private static class SingletonBuilder {
private static final Singleton s = new Singleton();
}

public static Singleton getInstance() {
return SingletonBuilder.s;
}
}

如果不使用静态内部类的方法创建线程安全的懒汉单例对象,那么需要使用一个双重检查的方式来保证线程安全

public class Singleton {
private Singleton() {
}
private static Singleton s ;

public Singleton getInstance() {
if (s==null){
synchronized (this){
if (s==null){
s=new Singleton();
}
}
}
return s;
}
}
静态内部类还可以用来实现建造者模式
当考虑到一个大对象由几个小对象组成,那么此时可以考虑使用建造者模式,之所以要用静态内部类是因为建造者模式中的建造者只是为了建造最大的那个对象服务,只需要服务一个类,所以此时可以使用内部类
但如果使用普通内部类,那么当程序运行时会创建两个大对象,就是使用普通内部类则需要先new一个外部类,在new一个内部类,此时创建了一个大对象,当构建好大对象时此时又会创建一个大对象,造成内存的浪费














标签:Singleton,内部,静态,private,static,new,作用
From: https://www.cnblogs.com/dujl/p/17045605.html

相关文章

  • C#、TS和Dart对比2:变量和作用域
    一、变量的声明、赋值和类型推断1、C#//C#是完全面向对象语言,所有代码都必须在类中//Program类的Main方法,是程序的入口函数publicclassProgram{staticvoidM......
  • matlab的mex文件作用
    文章目录前言一、MEX的介绍二、MEX的编写总结前言MEX文件是一种可在matlab环境中调用的C语言(或fortran)衍生程序,mex的编译结果实际上就是一个带输出函数mexFunction的dll文......
  • Jmeter学习:配置原件--Random 随机变量/自定义变量/Jmeter 变量作用域和规则
    一、Random随机变量其用法与Counter计数器一样。后两个参数不常用,就不说明了  二、自定义变量通常用于进行脚本的参数化,将多个场景出现的常量采用变量统一替换,简......
  • 变量、常量和作用域
    变量、常量和作用域变量变量是什么:可以变化的量Java是一个强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和......
  • c++静态库和动态库的添加
    #声明要求的cmake最低版本cmake_minimum_required(VERSION2.8)#声明一个cmake工程project(helloSLAM)#设置编译模式set(CMAKE_BUILD_TYPE"Debug")#共享库add_l......
  • IP的作用
    IP的作用当我们使用互联网时,最关心的问题是我的信息和行为能否成功发送出去,我能否收到来自外界的信息。通过IP,我们的需求得到了根本的保证。上文中说的发送与接收概括的说......
  • Asp.net MVC 设置静态资源禁止访问的方法
    如果设置了禁止访问那么程序也访问不到这个资源了 1.直接配置WebConfig在</system.webServer>底部加上下面的配置  <security>     <requestFilter......
  • android jni静态注册和动态注册
    静态注册对于静态注册的jni函数而言,jni函数签名名称要与java层对应的函数名称一一对应。当一个java类被加载时会调用LoadMethod将其所有的方法也都加载到虚拟机中,并调用Li......
  • SAP系统在企业内部控制方面有哪些独到之处?
    SAP系统在企业内部控制方面有哪些独到之处?   1,企业内部审计和质量追溯方面,SAP提供了全方位的支持。SAP系统对于所有用户在系统内的一切操作,都保留有原始痕迹记录。......
  • python文件头部#/usr/bin/env python和#coding:utf-8的作用
    一、声明作用#!/usr/bin/python#!/usr/bin/envpython#coding:utf-8以上代码,放在python文件的头部,仅作为声明作用如果是python3,则改为python3#!/usr/bin/envpython......