因为interface是一个纯抽象类,所以它不能定义实例字段。但是,interface是可以有静态字段的,并且静态字段必须为final类型

  1. public interface Person {
  2. public static final int MALE = 1;
  3. public static final int FEMALE = 2;
  4. }

实际上,因为interface的字段只能是public static final类型,所以我们可以把这些修饰符都去掉,上述代码可以简写为

  1. public interface Person {
  2. // 编译器会自动加上public statc final:
  3. int MALE = 1;
  4. int FEMALE = 2;
  5. }


初始化接口中的域

在接口中的域不能是空final,但可以被非常量表达式初始化
当然这些域不是接口的一部分,他们的值被存储在接口的静态存储区域内

  1. public interface RandVals {
  2. Random RAND = new Random(47);
  3. int RANDOM_INT = RAND.nextInt(10);
  4. long RANDOM_LONG = RAND.nextLong() * 10;
  5. float RANDOM_FLOAT = RAND.nextLong() * 10;
  6. double RANDOM_DOUBLE = RAND.nextDouble() * 10;
  7. }