类立即初始化的场景

类立即初始化

  1. new关键字
  2. 调用和设置静态域中的内容
  3. 子类执行时父类没有初始化
  4. 通过反射进行进行反射调用
  5. 用户指定一个主类(main()方法所在类)
  6. 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
*/
posted @   Felix_Openmind  阅读(51)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示