Al trabajar con anotaciones Me topé cruzando el siguiente fragmento de código (que es la anotación de Hibernate @NotNull):predeterminado valor de retorno del método en Java interconecta
@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 {};
}
Me preguntaba sobre la palabra clave default
/construir en el método definición, que nunca he visto antes. Según entendí, te permite definir un valor predeterminado para este método (o propiedad de anotación).
Ahora estaba tratando de aplicar esta construcción a una interfaz normal, pero falló. Esto sería un fracaso para compilar:
public interface DefaultTest {
public String test() default "value";
}
Pero esto funcionaría:
public @interface DefaultTest {
public String test() default "value";
}
Así que mi pregunta es: ¿Está el default
palabra clave anotación específica? Y si es así, ¿qué se opone a usar esta construcción en las definiciones de interfaz normales?
La herencia de interfaz múltiple tiene mucho sentido. Gracias por señalar esto. – MicSim
Resulta que en realidad eras profético. ¡Java 8 ahora te permite hacer lo que quieras! He actualizado mi respuesta. – Pace