java内部类设置为静态_Java静态内部类

为什么设计内部类

1、类B只用于服务类A,不需要与其他类产生依赖关系,就可以将B设置成A的内部类

2、类A里面有一些属性和方法可以抽出作为单独的模块或组件,就可以将其作为A的一个内部类

静态内部类就是个独立的类。

之所以要弄这么个东西,只是起到一个注释的效果,而且这个注释可静态检查。

比如有A,B两个类,B有点特殊,虽然可以独立存在,但只被A使用。

这时候怎么办?如果把B并入A里,复杂度提高,搞得A违反单一职责。如果B独立,又可能被其他类(比如同一个包下的C)依赖,不符合设计的本意。所以不如将其变成A.B,等于添加个注释,告诉其他类别使用B了,它只跟A玩。

非静态的才是真正的内部类,对其外部类有个引用。

静态内部类与普通内部类(非静态)

内部类可以认为是外部类的成员变量,普通内部类就是外部类的私有成员变量,因此依赖于外部类的实例对象。而静态内部类,可以看作是外部类的静态成员变量,是外部类的成员而不是外部类实例对象的成员,因此不要外部类实例化。只需要外部类被加载到内存中即可。

static class Outer {

class Inner {}

static class StaticInner {}

}

Outer outer = new Outer();

Outer.Inner inner = outer.new Inner();

Outer.StaticInner inner0 = new Outer.StaticInner();复制代码

1、普通内部类

普通内部类依赖于外部类的创建,现有外部类对象,才有内部类成员。

2、静态内部类

静态内部类就是个独立的类,只不过想借外部类的壳,与外部类没有什么“强依赖的关系”,可以独立存在,没有你,我也可以创建实例。

如何设计

如果我内部类与你外部类关系不紧密,耦合程度不高,不需要访问外部类的所有属性或方法,那么我就设计成静态内部类。而且,由于静态内部类与外部类并不会保存相互之间的引用,因此在一定程度上,还会节省那么一点内存资源。

如果你的需求不符合静态内部类所提供的一切好处,你就应该考虑使用内部类了。最大的特点就是:你在内部类中需要访问有关外部类的所有属性及方法,我知晓你的一切

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值