나는 당신이 말하는 것을 알고 있습니다. 예를 들어
나는 불행하게도
public interface ExecutableList<T extends ExecutableList<T,E>,E> //This is type parameter
extends List<E>, //self referencing. Trust
Comparable<E>, //me, it has its uses.
{
/** This would declare a constant but leave it to sub-interfaces/classes to define it. */
abstract String USER_FRIENDLY_NAME;
//Define the rest of your interface
}
USER_FRIENDLY_NAME
라는의 상수 문자열 필드 (나는 ExecutableList를 호출하고)이 인터페이스를 갖고 싶어,이 자바로 할 수 없습니다. Java 인터페이스에서 필드를 선언하면 수정 자 public
, static
및 final
이 포함됩니다.Java 프로그래밍 언어의 향후 변경으로 인해 abstract
이 추가되어 암시 적 수정자인 public abstract static final String USER_FRIENDLY_NAME;
을 만들 수 있지만 이에 대한 규칙을 명확하게 정의 할 수 있지만 abstract
이라는 단어는 일반적으로 abstract
및 final
으로 이해되므로 혼란 스럽습니다. 반대 의미를 정의하십시오.
나는 미래 버전의 자바가 이것을 구현할 것이라고 내 손가락을 넘기고있다. 개인 인터페이스 메소드가 Java 9 (기본 메소드를 사용하기 위해)에 추가되지만 언어에 추가 된 내용은 아직 없습니다. 먼저 여러 가지 하위 호환성 문제를 고려해야합니다. 오라클의 누군가가 이것을 읽으면, 인터페이스에서 미국의 선언 상수를 그대로 사용하고 상주하는 클래스/인터페이스를 정의하십시오 !!!
그 동안 유일한 방법은 인터페이스 또는 추상 클래스에 String getUserFriendlyName();
메소드를 정의하는 것입니다. 우아하지 않고 효과적이지는 않지만 현재 다른 옵션은 없습니다.
아마도 잠재적으로 다른 값을 가진 상수는 상수가 아닙니다. 그러니 피터스의 대답으로 가십시오. – TedTrippin