Tout en travaillant avec annotations je suis tombé accross la pièce de code suivante (il est l'annotation Hibernate @NotNull):méthode par défaut valeur de retour en Java interfaces
@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 {};
}
Je me demandais sur le mot-clé default
/construction dans la méthode définition, que je n'ai jamais vu auparavant. Comme je l'ai compris, il vous permet de définir une valeur par défaut pour cette méthode (ou la propriété d'annotation).
Maintenant j'essayais d'appliquer cette construction à une interface normale, mais elle a échoué. Cela ne permettrait pas de compiler:
public interface DefaultTest {
public String test() default "value";
}
Mais cela fonctionnerait:
public @interface DefaultTest {
public String test() default "value";
}
Ma question est la suivante: Est-ce l'annotation spécifique à mot-clé default
? Et si oui, qu'est-ce qui s'oppose à l'utilisation de cette construction dans les définitions d'interface normales?
L'héritage à plusieurs interfaces est parfaitement logique. Merci de l'avoir signalé. – MicSim
Il s'avère que vous étiez réellement prescient. Java 8 vous permet maintenant de faire ce que vous voulez! J'ai mis à jour ma réponse. – Pace