Tôi có một lớp trông như thế này:Làm thế nào để nhanh chóng một Object sử dụng Generics với Spring framework?
class Dao<T>{
...
}
Tôi muốn làm điều này:
new Dao<Student>();
từ cấu hình Spring XML.
Có thể thực hiện được không? Làm sao?
Tôi có một lớp trông như thế này:Làm thế nào để nhanh chóng một Object sử dụng Generics với Spring framework?
class Dao<T>{
...
}
Tôi muốn làm điều này:
new Dao<Student>();
từ cấu hình Spring XML.
Có thể thực hiện được không? Làm sao?
Đọc khoảng type erasure sẽ giúp bạn hiểu điều này tốt hơn một chút.
Khi chạy, các thông số loại cho một lớp chung là bị xóa. Có nghĩa là, như cletus cho biết, Generics trong Java về cơ bản là cú pháp đường - chúng chỉ là một tính năng biên dịch thời gian.
Kể từ mùa xuân là đối tượng thuyết minh tại thời gian chạy, nó thực sự là miễn phí để nhanh chóng một Dao
của bất kỳ loại - và trên thực tế, không có gì ngăn không cho nó tạo ra một Dao
và đi qua trong Student
loại trong một số phương pháp và Teacher
loại trong là khác. Vì vậy, về cơ bản câu trả lời là, Spring không có ý tưởng rằng loại Dao
có nghĩa là được tham số hóa và không thể làm bất cứ điều gì với nó.
Bạn không thể làm điều đó và lý do bạn không thể làm điều đó là nó thực sự có nghĩa là không có gì. Theo đó tôi có nghĩa là các Generics Java là cú pháp của đường, vì vậy bạn tạo ra một loại bean nào không liên quan. Bạn có thể tiêm nó vào bất cứ điều gì lấy một Dao (hoặc Dao) chỉ tốt tại thời điểm đó nó sẽ được sử dụng đúc tiềm ẩn của bất cứ loại nào nó được tiêm vào.