我有一个看起来像这样的课程:
class Dao<T>{
...
}
我想这样做:
new Dao<Student>();
来自Spring XML配置。
能做到吗?怎么样?
答案 0 :(得分:55)
阅读type erasure可以帮助您更好地理解这一点。
在运行时,泛型类的类型参数已擦除。正如cletus所说,Java中的泛型基本上是语法糖 - 它们只是编译时的特性。
由于Spring在运行时是实例化对象,因此它实际上可以自由地实例化任何类型的Dao
- 实际上,没有什么能阻止它创建Dao
并传入{{ 1}}一些方法中的类型和另一种方法中的Student
类型。
所以基本上答案是,Spring不知道Teacher
类型是参数化的,不能用它做任何事情。
答案 1 :(得分:8)
你不能这样做,你做不到的原因是它实际上没有任何意义。我的意思是Java泛型是语法糖,所以你创建一个bean的类型是无关紧要的。你可以将它注入任何一个Dao(或Dao)就好了,此时它将使用它注入的任何类型的隐式转换。