我有一個類,看起來像這樣:從Spring XML配置如何實例化一個在Spring框架中使用泛型的對象?
new Dao<Student>();
:
class Dao<T>{
...
}
我想這樣做。
可以這樣做嗎?怎麼樣?
我有一個類,看起來像這樣:從Spring XML配置如何實例化一個在Spring框架中使用泛型的對象?
new Dao<Student>();
:
class Dao<T>{
...
}
我想這樣做。
可以這樣做嗎?怎麼樣?
閱讀約type erasure應該會幫助你更好地理解這一點。
在運行時,泛型類的類型參數是已被擦除。意義,正如cletus所說,Java中的泛型基本上是句法糖 - 它們只是編譯時的特徵。
因爲春天是在運行時實例化對象,它實際上是隨意實例化任何類型的Dao
- 實際上,沒有什麼與創建Dao
並傳遞Student
類型的一些方法和Teacher
類型阻止它另一個。
所以基本上的答案是,Spring不知道Dao
類型是用來參數化的,不能對它做任何事情。
你不能這樣做,你無法做到的原因是它實際上沒有任何意義。我的意思是,Java泛型是語法糖,所以你創建一個bean的類型是不相關的。你可以將它注入任何採用Dao(或Dao)的任何東西,在這一點上它將使用隱式投射它注入的任何類型。