Với một giao diện chung chung nhưChú làm cho có sẵn generic loại
interface DomainObjectDAO<T>
{
T newInstance();
add(T t);
remove(T t);
T findById(int id);
// etc...
}
Tôi muốn tạo ra một subinterface chỉ định tham số kiểu:
interface CustomerDAO extends DomainObjectDAO<Customer>
{
// customer-specific queries - incidental.
}
Việc thực hiện cần phải biết các mẫu thực tế loại tham số, nhưng tất nhiên loại xóa nghĩa là không có sẵn trong thời gian chạy. Có một số chú thích mà tôi có thể đưa vào để khai báo kiểu giao diện không? Một cái gì đó như
@GenericParameter(Customer.class)
interface CustomerDAO extends DomainObjectDAO<Customer>
{
}
Việc triển khai có thể tìm nạp chú thích này từ giao diện và sử dụng nó làm thay thế cho truy cập loại generic chung.
Một số nền:
Giao diện này được thực hiện sử dụng JDK proxy động như đã nêu here. Phiên bản không chung của giao diện này đã hoạt động tốt, nhưng sẽ tốt hơn nếu sử dụng Generics và không phải tạo ra các phương thức trong một subinterface chỉ để xác định loại đối tượng miền. Generics và proxy chăm sóc hầu hết mọi thứ, nhưng loại thực tế là cần thiết trong thời gian chạy để thực hiện phương thức newInstance
, trong số những thứ khác.
Bạn đã cố gắng viết chú thích của riêng mình chưa? –
@Lauri - Tôi đã không tự làm, nhưng tôi có thể làm điều đó, tôi thấy rất nhiều câu hỏi về generics và thất vọng về loại tẩy xoá, vì vậy tôi hy vọng điều này đã được thực hiện rồi. – mdma