Java中的静态嵌套类

时间:2019-02-19 05:44:23

标签: java linked-list

mod_rewrite

我读到关于静态内部类的知识,就像普通类一样。

在此,我什至不知道在声明静态内部类之前如何调用 Node head

因为该外部类甚至在声明它之前就已经知道该内部类,所以静态内部类是否首先被编译?

3 个答案:

答案 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本身可以隐藏   来自外界。

     

它可以导致更具可读性和可维护性的代码:小嵌套   顶级类中的类将代码放置在离其更近的位置   使用。

对于所有嵌套类(包括静态类)都是如此。