接口中界说的字段会自动具有static和final属性。它们不能是“空缺final”,但可初始化成很是数表达式。譬喻:
//: RandVals.java // Initializing interface fields with // non-constant initializers import java.util.*; public interface RandVals { int rint = (int)(Math.random() * 10); long rlong = (long)(Math.random() * 10); float rfloat = (float)(Math.random() * 10); double rdouble = Math.random() * 10; } ///:~
由于字段是static的,所以它们会在首次装载类之后、以及首次会见任何字段之前得到初始化。下面是一个简朴的测试:
//: TestRandVals.java public class TestRandVals { public static void main(String[] args) { System.out.println(RandVals.rint); System.out.println(RandVals.rlong); System.out.println(RandVals.rfloat); System.out.println(RandVals.rdouble); } } ///:~
虽然,字段并不是接口的一部门,而是生存于谁人接口的static存储区域中。