【Java内部类】普通内部类和静态内部类的加载时机
2023-09-27 14:19:52 时间
- 内部类和静态内部类都是延时加载的,也就是说只有在明确用到内部类时才加载。只使用外部类时不加载。
- 非静态内部类不能拥有 静态变量 静态语句 静态方法
- 静态内部类无需外部类实例即可调用
- 非静态内部类需要外部类实例调用
示例:
public class OuterClass
{
static{
System.out.println("OuterClass static load.");
}
public OuterClass()
{
System.out.println("flag");
}
public OuterClass(String flag)
{
System.out.println("flag:"+flag);
}
class InnerClass
{
//private static String te = "";
// static{
// System.out.println("InnerClass static load.");
// }
// 非静态内部类不能拥有 静态变量 静态语句 静态方法
private OuterClass out = new OuterClass("inner");
}
static class InnerStaticClass
{
private static OuterClass out = new OuterClass("innerStatic");
static{
System.out.println("InnerStaticClass static load.");
}
private static void load()
{
System.out.println("InnerStaticClass func load().");
}
}
public static OuterClass getInstatnce()
{
return OuterClass.InnerStaticClass.out;
}
public static void main(String[] args)
{
System.out.println("Begin");
OuterClass.InnerStaticClass.load();
// 静态内部类无需外部类实例即可调用
OuterClass out = OuterClass.InnerStaticClass.out;
OuterClass.InnerClass innerClass = out.new InnerClass();
// 非静态内部类需要外部类实例调用
}
}
输出结果:
OuterClass static load.
Begin
flag:innerStatic
InnerStaticClass static load.
InnerStaticClass func load().
flag:inner
相关文章
- Channel (Java NIO)
- 安卓逆向_16 --- ARM 静态分析( 使用 IDA Pro 分析 ARM 汇编【java_ 和 JNI_OnLoad】 )
- java特性之二----继承
- Java进阶:线程池、局部变量、内部类、静态嵌套类和引用,哦,还有一个坑
- Java 父类、静态、子类执行顺序
- java开源内容管理系统J4CMS支持真正静态化
- java的反射
- servlet+jsp+java实现Web 应用
- 推荐一个超级简单 Java 图形验证码模块
- Java单例模式的不同写法(懒汉式、饿汉式、双检锁、静态内部类、枚举)
- Java IO: 文件
- Java 成员内部类 静态内部类
- Java排序
- 设计模式java——组合模式
- 阿里互联网一线大厂 Java 岗面试题库(2022 年版)这次 38k!稳了
- 转:Java中String与byte[]的转换
- 《Java 2D游戏编程入门》—— 2.1 处理键盘输入
- 《Java程序员面试秘笈》—— 面试题9 对于类的静态变量的理解
- Java子父类继承情况下构造函数/代码块/静态代码块执行顺序
- java一维数组的声明与初始化
- java线程安全问题之静态变量、实例变量、局部变量
- Java_java动态编译整个项目,解决jar包找不到问题
- Java实现微信小程序文本安全内容检测
- 华为OD机试 -静态扫描最优成本(Java) | 机试题+算法思路+考点+代码解析 【2023】
- Java Interview Reference Guide--reference
- java.lang.IllegalAccessError: tried to access method org.apache.poi.util.POILogger.log from class org.apache.poi.openxml4j.opc.ZipPackage