先了解下静态内部类的调用
静态内部类 是java静态类的使用规范,静态类必须也只能是内部类,用法上和其他的静态变量方法一样,用外部类点内部类名进行创建和使用。
那么静态内部类存在的意义是什么?有什么作用?
静态内部类的使用有几种场景:
1.A类中需要一个B类,但是B类只为A类服务,这种情况不需要将B类单独剥离,只需要在A内部即可。 like earth--water‘s relation
2.一个类的构建有非常多参数的时候--引申到了建造者模式。
参数较多时 ,比如有几十个,初始化参数非常不灵活 (专门提供 VS 想用哪个用哪个),那当然是想用个哪个用哪个,只处理部分参数比较灵活,普通的方式需要自己提供对应的构造函数。
示例:
/**
* @author xwang
* @Date 2021/7/15
* 建造者模式 ---使用场景 当初始化参数较多 构建对象时不灵活,使用建造者模式更加灵活,实现需要使用静态内部类进行,原因有二
* 1.静态内部类方便外部类直接调用 2.静态内部类进行构建完成之后能够调用外部类的对象。3.内部类只为外部类服务
*/
public class CarBuilder {
private String engine;
private BigDecimal price;
private String color;
private long length;
public CarBuilder(Builder builder) {
this.engine = builder.engine;
this.price = builder.price;
this.color = builder.color;
this.length = builder.length;
}
public static class Builder{
private String engine;
private BigDecimal price;
private String color;
private long length;
public Builder(){}
public Builder withEngine(String engine){
this.engine = engine;
return this;
}
public Builder withPrice(BigDecimal price){
this.price = price;
return this;
}
public Builder withColor(String color){
this.color = color;
return this;
}
public Builder withLength(Long length){
this.length = length;
return this;
}
public CarBuilder builder(){
return new CarBuilder(this);
}
}
public static void main(String[] args) {
CarBuilder.Builder builder = new CarBuilder.Builder();
CarBuilder carBuilder = builder.withEngine("")
.withLength(100L)
.withPrice(BigDecimal.ONE)
.withColor("red").builder();
}
}
建造者模式在框架中使用广泛,比如OkHttpClient.Builder等