Trong khi làm việc với các chú thích tôi vấp accross các đoạn mã sau (đó là chú thích Hibernate @NotNull):Mặc định phương thức hoàn trả giá trị trong Java giao diện
@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 {};
}
tôi đã tự hỏi về những từ khóa default
/xây dựng trong phương pháp định nghĩa mà tôi chưa bao giờ thấy trước đây. Như tôi đã hiểu, nó cho phép bạn xác định một giá trị mặc định cho phương thức này (hoặc thuộc tính chú thích).
Bây giờ tôi đã cố gắng áp dụng cấu trúc này cho một giao diện bình thường, nhưng nó không thành công. Điều này sẽ không biên dịch:
public interface DefaultTest {
public String test() default "value";
}
Nhưng điều này sẽ làm việc:
public @interface DefaultTest {
public String test() default "value";
}
Vì vậy, câu hỏi của tôi là: Là default
từ khóa chú thích cụ thể? Và nếu có, những gì nói chống lại bằng cách sử dụng cấu trúc này trong định nghĩa giao diện bình thường?
Thừa kế nhiều giao diện mang lại cảm giác hoàn hảo. Cảm ơn bạn đã chỉ ra điều này. – MicSim
Hóa ra bạn thực sự là nguyên nhân. Java 8 bây giờ cho phép bạn làm những gì bạn muốn! Tôi đã cập nhật câu trả lời của mình. – Pace