Tôi không biết rằng chú thích sẽ thay thế giao diện, nhưng tôi có thể thấy được sức hấp dẫn. Tất cả phụ thuộc vào việc triển khai mặc dù.
Chú thích cung cấp dữ liệu meta để mô tả thêm mã, mà người tiêu dùng (phần lớn thời gian) diễn giải khi chạy bằng phản xạ. Sử dụng giao diện, hợp đồng thực hiện này được xác định rõ ràng.
Bạn có thể có:
interface CrudDao<T> {
Serializable create(T t);
T read(Serializable id);
void update(T t);
void delete(T t);
}
Đây sẽ là một hợp đồng cồng kềnh để thực hiện, và có khả năng sẽ phải chịu một số loại phương pháp chaining.
Thay vào đó bạn có thể làm điều gì đó như:
class SomeDao {
@Create
long create(SomeEntity e) { // code }
@Read
SomeEntity read(long id) { // code }
@Update
void update(SomeEntity e) { // code }
@Delete
void delete(SomeEntity e) { // code }
}
Nhược điểm là nó sẽ là rườm rà để sử dụng:
class CrudFactory {
long create(Class clazz, Object obj) {
// loop through methods
// find method with @Create
// call method
}
}
Chú thích trong ví dụ này sẽ là quá mức cần thiết một phần lớn thời gian, IMO . Có điều gì đó để nói về một hợp đồng được xác định rõ ràng và được ghi chép đầy đủ.
Tôi hơi bối rối về ý của bạn bằng cách sử dụng giao diện để thêm trường vào một lớp. Bạn có nghĩa là sử dụng một chú thích để thêm các phương thức và các phương thức getter-setter? – Uri
Bạn cũng có thể chia sẻ đoạn mã tại đây không? Nó chắc chắn sẽ giúp chúng tôi, trong việc hiểu câu hỏi của bạn. –