Tôi có dao dao ngủ đông tham số thực hiện các thao tác cơ bản, và khi tham số được sử dụng như một đại biểu để thực hiện các hoạt động crud cơ bản cho một dao đã cho.Lớp phát sinh từ Generic T
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
Tôi muốn để có thể lấy được lớp từ T trong thời gian chạy để tạo ra tiêu chí truy vấn trong Hibernate, chẳng hạn rằng:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
tôi biết:
T.getClass()
không tồn tại, nhưng có cách nào để lấy được đối tượng Class đúng từ T lúc chạy không?
Tôi đã nhìn vào generics và phản ánh nhưng đã không đưa ra một giải pháp phù hợp, có lẽ tôi đang thiếu một cái gì đó.
Cảm ơn.
Vâng, đây là một giải pháp mà tôi có. Tôi muốn có thể lấy được lớp từ T nếu có thể, mà không cần thêm sự phụ thuộc vào Lớp. – bowsie
@bowsie: Tôi hiểu nỗi đau của bạn. Thật không may, trình biên dịch hoàn thành xóa tất cả dấu vết của T. Nó được gọi là loại tẩy xoá: http://java.sun.com/docs/books/tutorial/java/generics/erasure.html –
Ahh được rồi, cảm ơn Adam. – bowsie