xem xét mã này:Tại sao giao diện không được phép làm thành viên chú thích?
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Bar {
Foo foo() default FooImpl.FooConstant;
}
biên dịch báo lỗi:
annotation value not of an allowable type
Nếu tôi thay Foo
với FooImpl
mã được chấp nhận.
Lý do của hành vi này là gì?
loại thành viên
Tôi thực hiện câu đầu tiên, câu thứ hai có vẻ là vấn đề. Tôi tự hỏi tại sao điều này không được phép trong các chú thích ... – soc
@soc * Tôi thực hiện câu đầu tiên * Không, bạn không. 'Lớp mở rộng Foo> fooType() 'sẽ hợp lệ,' Foo foo() 'thì không. –
xem xét Foo Foo() như là một phương pháp (chỉ vì lợi ích của sự đơn giản) ... chúng ta có thể đề cập đến giao diện như kiểu trả về cho một phương thức? :) – Nik