mod_rewrite
我读到关于静态内部类的知识,就像普通类一样。
在此,我什至不知道在声明静态内部类之前如何调用 Node head ?
因为该外部类甚至在声明它之前就已经知道该内部类,所以静态内部类是否首先被编译?
答案 0 :(得分:0)
类的静态组件始终在类的实例组件之前进行编译。如您所想,编译过程是从上到下进行的,但是对于不同种类的组件(静态块,常量,实例变量,构造函数等),编译将多次进行。
这个答案提供了另一个很好的例子:explain java compile order
答案 1 :(得分:0)
您要声明Node类型的变量(不调用),然后编译器将查找Node类型。当您将Node定义为静态内部类(或内部类)时,编译器就会知道真正的节点是什么。 java类中成员的顺序无关紧要。
答案 2 :(得分:0)
正如Java Compilation中所述:
在Java中,如果使用了对任何其他Java对象的任何引用,则该对象的类将被自动编译(如果尚未编译)。这些自动编译是嵌套的,并且一直持续到编译了运行程序所需的所有类为止。因此,仅编译高级类就足够了,因为所有依赖类都会被自动编译。
所以,总的来说你是对的。
使用嵌套类的原因呢? Nested Classes Oracle教程说:
使用嵌套类的令人信服的原因包括:
这是一种将仅用于一个类的类进行逻辑分组的方法 地点:如果一个班级仅对另一个班级有用,那么它就是 将其嵌入该类并将两者保持在一起是合乎逻辑的。套料 这样的“帮助程序类”使它们的程序包更加精简。
它增加了封装:考虑两个顶级类A和B, B需要访问A的成员,否则该成员将被声明 私人的。通过将B类隐藏在A类中,可以声明A的成员 私人,B可以访问它们。另外,B本身可以隐藏 来自外界。
它可以导致更具可读性和可维护性的代码:小嵌套 顶级类中的类将代码放置在离其更近的位置 使用。
对于所有嵌套类(包括静态类)都是如此。