谁在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 final
而static-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