public class MyTest6 { public static String printWhenInit(String s){ System.out.println(s); return s.substring(s.indexOf(" ")); } public static void main(String[] args){ System.out.println(SubI.iField3); //静态的运行时才能确定的常量,这时存有该常量的接口被初始化,其父类不会被初始化 // System.out.println(SubI.iField2); //静态的编译器可以确定的常量,这时三个接口都不会被初始化,原因和类一样 } } interface SuperI { public static final String superField = MyTest6.printWhenInit(" initializing SuperI.superField "); } interface I extends SuperI{ public static final String iField = MyTest6.printWhenInit("initializing I.iField "); public static final String iField2 = "heihie"; public static final String iField3 = UUID.randomUUID().toString(); } interface SubI extends I { public static final String subField = MyTest6.printWhenInit(" initializing SubI.subField "); } 你运行下这个就看到了,打印了initializing I.iField说明I初始化了,但是没打印initializing SuperI.superField说明父接口没有初始化
点赞 8

相关推荐

链接
海梨花:我说话难听,你这简历跟没写没啥区别,搜搜别人的简历,用心写,不要随随便便就结束了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务