接口中定义的字段会自动具有static和final属性它们不能是空白final但可初始化成非常数表达式例如 //: RandValsjava // Initializing interface fields with // nonconstant initializers import javautil*; public interface RandVals { int rint = (int)(Mathrandom() * ); long rlong = (long)(Mathrandom() * ); float rfloat = (float)(Mathrandom() * ); double rdouble = Mathrandom() * ; } ///:~ 由于字段是static的所以它们会在首次装载类之后以及首次访问任何字段之前获得初始化下面是一个简单的测试 //: TestRandValsjava public class TestRandVals { public static void main(String[] args) { Systemoutprintln(RandValsrint); Systemoutprintln(RandValsrlong); Systemoutprintln(RandValsrfloat); Systemoutprintln(RandValsrdouble); } } ///:~ 当然字段并不是接口的一部分而是保存于那个接口的static存储区域中 |