Java静态类只有一种情况,那就是静态内部类,在外部类添加static关键字,Java编译器编译是不能通过的。静态内部类的优点在于,创建实例的时候,不用先实例化外部类。
// 创建静态内部类实例
Inner inner = new Outer.Inner();
//创建非静态内部类实例
Outer outer = new Outer();
Outer.Inner inner1 = outer.new Inner();
当外部类需要使用内部类,并且内部类不需要使用外部类资源的情况下,可以考虑静态内部类的设计。最典型的例子是Builder设计模式的使用:
public class Outer {
private String name;
private int age;
public static class Builder {
private String name;
private int age;
public Builder(int age) {
this.age = age;
}
public Builder withName(String name) {
this.name = name;
return this;
}
public Builder withAge(int age) {
this.age = age;
return this;
}
public Outer build() {
return new Outer(this);
}
}
private Outer(Builder b) {
this.age = b.age;
this.name = b.name;
}
}
一般如果不确定传入的参数是多少个,可使用这种设计模式。
参考文档https://www.cnblogs.com/Alex--Yang/p/3386863.html#2801577
网友评论