如何判断接口是否被初始化

public interface IDao {

    Thread thead = new Thread(){
        {
            System.err.println("IUserDao is init");
        }
    };
}

{ }static{ } 对比
{ }包括的代码块,会在每次实例化对象的时候执行一次
而被static{ }包括的代码块,会在类初始化的时候执行一次

根据java语言的特性,

  1. 接口中的变量默认添加了public static final
  2. 接口中的方法默认添加了public abstract

java语言中abstractstaticfinal 是不能共存的

有了以上两点作为前提,再根据 常量传播优化 所以只要IDao 接口被初始化,就会执行输出语句。

常量传播优化:被 static final 关键字修饰的变量(也就是可以确定值且该值不会再运行期间改变的变量,比如不包括UUID)会在编译期间将该变量初始化并存储到引用该变量的类的常量池中。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,620评论 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,955评论 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,817评论 0 11
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,713评论 4 12
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 902评论 0 1

友情链接更多精彩内容