本文主要是介绍类立即初始化的场景,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
类立即初始化
- new关键字
- 调用和设置静态域中的内容
- 子类执行时父类没有初始化
- 通过反射进行进行反射调用
- 用户指定一个主类(main()方法所在类)
- jdk1.8之后允许接口有一个默认(default)方法
被动引用的例子 - 子类引用父类静态域的内容,不会导致子类完成初始化
class SuperClass {
static{
System.out.println("SuperClass Init!");
}
public static int value = 123;
}
class SubClass extends SuperClass{
static{
System.out.println("SubClass Init");
}
}
// 非主动使用类字段演示
public class TestMain{
public static void main(String [] args){
System.out.println(SubClass.value);
}
}
//SuperClass Init!
//123
被动引用的例子 - 常量在编译阶段即存储方法区的常量池中,本质上没有触及到定义常量的类即不会触发定义常量所在类的初始化
public class TestInitialization {
public static void main(String[] args) {
Test02.getInfo();
}
}
class Test01{
static{
System.out.println("Test01 - Initialized!");
}
public static final String info = "we are the world";
}
class Test02{
static{
System.out.println("Test02 - Initialized!");
}
public static void getInfo(){
System.out.println(Test01.info);
}
}
/*
Test02 - Initialized!
we are the world
*/
这篇关于类立即初始化的场景的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!