接口->匿名类

eqqqjvef  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(452)

为什么不打印以下代码 ??? ?

public class TestInterface {
    interface I {};
    I tester = new I() {{System.out.println("???");}};
    static public void main(String[]args){
        System.out.println("OGOGO");
    }
}

输出:

OGOGO

ide:智能
jave:jdk-14.0.2版本

falq053o

falq053o1#

阿库兹明尼赫是对的!
当我换到

static I tester

它打印出来了。

jq6vz3qz

jq6vz3qz2#

它不打印是因为 new I() {{System.out.println("???");}}; 永远不会被执行。注意,您有一个成员变量,一个字段,没有 static ,那里。字段与类的相应示例一起初始化,如下所示 TestInterface . 如果希望它打印某些内容,请创建 TestInterface 它的字段将用您指定的内容初始化。或者简单地用 static 因此它成为一个类变量,并在类本身初始化时初始化。

相关问题