init与clinit区别
clinit
- 该类既没有声明任何类变量,也没有静态初始化语句;
- 该类声明了类变量,但没有明确使用类变量初始化语句或静态初始化语句初始化;
- 该类仅包含静态 final 变量的类变量初始化语句,并且类变量初始化语句是编译时常量表达式;
init
实例化一个类的四种途径:
- 调用 new 操作符
- 调用 Class 或 java.lang.reflect.Constructor 对象的newInstance()方法
- 调用任何现有对象的clone()方法
- 通过 java.io.ObjectInputStream 类的 getObject() 方法反序列化