2013-08-19 36 views
6

Có thể sử dụng tên đơn giản của một lớp bên trong chú thích không? Mục đích của tôi là để có được thời gian an toàn biên dịch cho tiêm bằng cách sử dụng tên JNDI có chứa các lớp học.Tên lớp Java là thuộc tính chú thích

Ví dụ (những gì tôi muốn làm, điều này không tại thời gian biên dịch):

@EJB(mappedName = "java:module/" + MyService.class.getSimpleName()) 
private MyService myService; 

class.getSimpleName() dường như được giải quyết trong thời gian chạy, mà không làm việc với các chú thích. Tôi có thể lấy nó như một hằng số không?

Trả lời

0

Không thể theo cách bạn có. Nó có thể được thực hiện với các kỹ thuật AOP. Nhưng,

@EJB(mappedName = "java:module/" + MyService.class.getSimpleName()) 
private MyService myService; 

Trong đoạn mã này, bạn dường như chỉ có một giá trị có thể có là "MyService". Nó sẽ không thay đổi động, vậy tại sao bạn muốn đánh giá nó một cách năng động?

+3

Nếu tôi ở một số điểm đổi tên lớp này, tôi muốn an toàn thời gian biên dịch. Một chuỗi sẽ phải được thay đổi theo cách thủ công, trong khi tham chiếu đến tên lớp sẽ được tự động tái cấu trúc hoặc sẽ cung cấp lỗi hẹn giờ biên dịch. –