Как я могу объявить поле интерфейса Java, который реализует класс должен уточнить это поле - PullRequest
8 голосов
/ 01 июля 2011

Как я могу объявить поле интерфейса Java, которое реализует класс, должно уточнить это поле?

например

public interface IWorkflow{
    public static final String EXAMPLE;// interface field 
    public void reject();
}

// and implement class
public class AbstWorkflow implements IWorkflow
{
    public static final String EXAMPLE = "ABCD"; /*MUST HAVE*/
    public void reject(){}
...
}

Спасибо.

Ответы [ 2 ]

11 голосов
/ 01 июля 2011

Вы не можете.

Кроме того, interface также не может требовать определения методов static в реализации.

Лучшее, что вы можете сделать, это:

public interface SomeInterface {
    public String getExample();
}
4 голосов
/ 01 июля 2011

См. Раздел 9.3 спецификации .Нет переопределения полей в интерфейсах - они просто скрыты в одних контекстах и ​​неоднозначны в других.Я бы просто держался подальше.Вместо этого поместите геттер в интерфейс (getEXAMPLE ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...