接口中定义的字段会自动具有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存储区域中。
闽公网安备 35060202000074号