Mentre si lavora con le annotazioni mi sono imbattuto attraversato il seguente pezzo di codice (è l'annotazione Hibernate @NotNull):predefinito valore di ritorno del metodo in Java si interfaccia
@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 {};
}
Mi chiedevo circa la parola default
/costrutto nel metodo definizione, che non ho mai visto prima. Come ho capito, ti consente di definire un valore predefinito per questo metodo (o la proprietà di annotazione).
Ora stavo cercando di applicare questo costrutto a un'interfaccia normale, ma non è riuscito. Ciò non riuscirebbe a compilare:
public interface DefaultTest {
public String test() default "value";
}
Ma questo dovrebbe funzionare:
public @interface DefaultTest {
public String test() default "value";
}
Quindi la mia domanda è: È la parola chiave default
annotazione-specifico? E se sì, cosa si oppone all'uso di questo costrutto nelle normali definizioni di interfaccia?
L'ereditarietà dell'interfaccia multipla ha perfettamente senso. Grazie per averlo indicato. – MicSim
Si scopre che in realtà era preveggente. Java 8 ora ti permette di fare ciò che vuoi! Ho aggiornato la mia risposta. – Pace