Философия Java

Инициализирование полей в интерфейсах


Поля определенные в интерфейсах автоматически становятся static и final. Они не могут быть пустыми (чистыми) final переменными, но они могут быть инициализированы не постоянными выражениями. К примеру:

//: c08:RandVals.java

// Инициализирование полей интерфейса

// не постоянными инициализаторами.

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, то они инициализируются при первой загрузке класса, что происходит при первом доступе к любой переменной. Вот пример:

//: c08: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 хранилище этого интерфейса.



Содержание раздела