2011-08-15 30 views
29

Java cho phép định nghĩa các giá trị trong các chú thích, ví dụ:Có thể làm cho giá trị của chú thích Java bắt buộc không?

public @interface MyAnnotation { 
    int MyValue(); 
} 

Mặc dù nó có thể đặt một giá trị mặc định cho MyValue chú thích, tôi đã tự hỏi liệu nó có thể làm cho nó bắt buộc. Ý tôi là buộc người dùng phải cung cấp giá trị cho MyValue khi chú thích một lớp hoặc trường.

Tôi đã xem qua tài liệu nhưng không thể tìm thấy bất kỳ thứ gì. Có ai có một giải pháp cho vấn đề này hoặc là nó chỉ là không thể làm cho một giá trị của chú thích bắt buộc?

Trả lời

53

Nếu bạn không chỉ định giá trị mặc định, nó là bắt buộc. Ví dụ bạn sử dụng chú thích của mình mà không cần sử dụng thuộc tính MyValue tạo này lỗi biên dịch:

annotation MyAnnotation is missing MyValue

+1

Tôi đã bỏ lỡ điều đó như thế nào, cảm ơn! – JVerstry

4

Với

public @interface MyAnnotation { 
    int MyValue(); 
} 

một lớp

@MyAnnotation 
public class MyClass { 

} 

sẽ là một lỗi biên dịch mà không có một giá trị.

1

Tôi chưa thử điều này nhưng nếu bạn muốn ép buộc các giá trị cho một giá trị cụ thể có thể làm cho loại này trở thành một sự kiện.

public @interface MyAnnotation { 
    Status status(); 
} 

Nơi Trạng thái là enum.

Các vấn đề liên quan