在“不定长多参数build()构造方式”中的内部build()类中为静态static内部类,为什么是静态内部类呢(准确来说其实build类为外部类),其实很简单,在这里稍微详细的给大家谈谈自己的理解,仅针对刚入java的小白,高手一定比我见解要深刻很准确,首先举个普通内部类的例子
class Outer {
private String info ="hello word";
class Inner{//内部类
public void print(){//可以直接访问外部类的私有属性
System.out.print(info);
}
}
public void fun(){//通过内部类的实例化对象调用方法
public class Main {
public static void main(String args[]){
new Outer().fun();//调用
}
}
以上程序中,Inter类作为Outer类的内部类存在,并且在外部类的fun()方法中直接实例化内部类的对象并调用print()方法。
缺点:正常一个类操作时,在类中最好只定义属性或方法,如果定义一个类的话,则肯定破坏了程序的一个结构。
优点:可以方便的访问外部类中的私有属性。
以上程序是没有static关键字的内部类,这样的内部类就是纯粹意义上的内部类,不能通过外部类或是外部类的实例调用内部类,所以build构造方法中不能使用普通的内部类作为build构造。
如果一个内部类使用了static关键字声明,则此内部类就可以称为外部类,可以直接通过
外部类.内部类
进行访问,例如
class Outer {
private static String info ="hello word";//注意静态内部类访问的私有属性也必须是静态的
static class Inner{//加static关键字的内部类
public void print(){
System.out.print(info);
}
}
public void fun(){
new Inner().print();
}
}
public class Main {
public static void main(String args[]){
new Outer().fun();
new Outer.Inner().print();//这个调用方法看着是不是很熟悉,和在build构造中的一样
}
}
此时的内部类和外部类一样,可以实例化自己的实例,例如
Outer out = new Outer();
Outer.Inner in = out.new Inner();
除此之外,内部类也可以在方法中声明,感兴趣的读者可以自己去查一查,在这里不再赘述