我无法理解以下文本...这是否意味着<clinit>用于空构造函数?为什么拥有两个不同的版本很重要?

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html

最佳答案

<init>是实例的(或其中的)构造函数,以及非静态字段初始化。
<clinit>是该类的静态初始化块,以及静态字段初始化。

class X {

   static Log log = LogFactory.getLog(); // <clinit>

   private int x = 1;   // <init>

   X(){
      // <init>
   }

   static {
      // <clinit>
   }

}

关于java - Java:<init>和<clinit>有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8517121/

10-09 19:38