谁在Java中初始化接口的变量?

由于Interface中没有构造函数,它们在java中初始化接口的变量?谁在Java中初始化接口的变量?

回答:

Java对interfaces使用隐式修饰符。所以接口:

public interface I { 

public static final String FIELD = "Some field";

public abstract void method();

}

然后你就看到,在一个界面中的字段都是public static final和方法public abstract

public interface I { 

String FIELD = "Some field";

void method();

}

实际上可以作为被写入。

由于该字段为static finalstatic-initializer-blocks在接口中不允许,因此必须直接进行初始化,因此不使用构造函数。

回答:

这BTW是不超过一个类中的变量public static final太大的不同 - 它不会在构造函数中初始化,因为好,这是一个constant - 为javap输出ConstantValue。

class Test { 

public static final int x = 5; // ACC_PUBLIC, ACC_STATIC, ACC_FINAL

// ConstantValue: int 5

public int y = 3; // putfield , initialized inside default constructor

}

编辑霍尔格是正确的,他的评价是,可以在初始化静态块中的代码。例如有一类:

class C { 

}

已在一个接口的引用:

interface Test { 

C c = new C();

}

会导致在编译时的静态块,将是这个样子:

interface Test { 

C c;

static {

c = new C();

}

}

以上是 谁在Java中初始化接口的变量? 的全部内容, 来源链接: utcz.com/qa/262497.html

回到顶部