博客
关于我
记final与静态内部类的疑惑
阅读量:324 次
发布时间:2019-03-04

本文共 618 字,大约阅读时间需要 2 分钟。

为什么要把内部类声明为静态的?

在Java中,内部类默认是非静态的,意味着它会受到外部类实例化的影响。每当外部类创建一个实例时,内部类也会创建一个实例。如果内部类不是静态的,那么外部类的每个实例都有自己的内部类实例,这样在访问内部类的成员时,可能会有多个单例对象被创建,导致单例模式失效。

为了避免这种情况,内部类必须声明为静态。静态的内部类不会随着外部类实例的创建而创建实例,它们可以独立存在。这确保了内外类之间的依赖关系被消除,从而避免内存泄漏和单例模式不稳定的问题。

为什么静态类里获取单例对象要用final修饰?

在静态类中获取单例对象时,final修饰是为了确保单例对象在定义后不能被修改。这意味着一旦single变量被赋值,就不能被其他地方修改,保证了单例对象的唯一性和稳定性。如果不用final,可能会有多个线程在同一个时间修改single变量,导致并发问题,破坏单例模式的正确性。

为什么内部类也得声明为静态的?

当使用内部类.内部类的变量方式获取单例时,内部类必须声明为静态。否则,非静态内部类的成员不能定义为静态,会导致作用域混乱。非静态内部类依赖于外部类的实例化,如果成员变量或方法定义为静态,那么它们的作用域就变成了类级别的,不依赖于实例化,这会造成作用域冲突。

总结来说,内部类必须声明为静态以确保单例模式的正确性,final修饰用于保护单例变量不被修改。通过这些措施,Java确保了单例模式的高效性和安全性。

转载地址:http://bifh.baihongyu.com/

你可能感兴趣的文章
php注册页面实现注册后跳转页面
查看>>
PHP消息队列的实现方式与详解,值得一看
查看>>
PHP混合Go协程并发
查看>>
php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
查看>>
PHP源码安装后如何新增模块
查看>>
php源码详细安装步骤,linux下php源码安装步骤
查看>>
php漏洞tips
查看>>
php版Zencoding之 phpstorm
查看>>
PHP版本升级5.4手记
查看>>
php版本升级总结
查看>>
php版本微信公众号开发
查看>>
php版的微信公众号开发演示
查看>>
php生成html文件的多种方法介绍
查看>>
php生成二维码到图片上
查看>>
php生成二维码并下载图片(适应于框架)
查看>>
PHP生成及获取JSON文件的方法
查看>>
PHP生成唯一不重复的编号
查看>>
PHP生成器-动态生成内容的数组
查看>>
PHP的ip2long和long2ip升级函数
查看>>
PHP的json_encode函数应用到微信接口问题(include \uxxxx will create fail)
查看>>