Standard-Rückgabewert der Methode in der Java-Schnittstellen

Während der Arbeit mit Anmerkungen stolperte ich über den folgenden code-Abschnitt (es ist der Ruhezustand @NotNull annotation):

@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {})
public @interface NotNull {

    @Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
    @Retention(value = RetentionPolicy.RUNTIME)
    @Documented
    public @interface List {

        public NotNull[] value();
    }

    public String message() default "{javax.validation.constraints.NotNull.message}";

    public Class<?>[] groups() default {};

    public Class<? extends Payload>[] payload() default {};
}

Wunderte ich mich über die default keyword/Konstrukt in die Methode-definition, die ich nie zuvor gesehen habe. Wie ich verstanden habe, Sie können einen Standardwert für diese Methode (oder eine annotation property).

Nun war ich versucht, dieses Konstrukt zu einem normalen interface, aber es scheiterte. Dies würde nicht kompilieren:

public interface DefaultTest {
    public String test() default "value";
}

Aber das funktionieren würde:

public @interface DefaultTest {
    public String test() default "value";
}

Also meine Frage ist: Ist die default Stichwort-Anmerkung-spezifische? Und wenn ja, was spricht gegen die Verwendung dieses Konstrukts in normal-interface-Definitionen?

InformationsquelleAutor der Frage MicSim | 2010-09-29

Schreibe einen Kommentar