如何实例化一个在Spring框架中使用泛型的对象?
我有一个看起来像这样的类:
class Dao<T>{
...
}
我想这样做:
new Dao<Student>();
从 Spring XML 配置。
这能做到吗?如何?
我有一个看起来像这样的类:
class Dao<T>{
...
}
我想这样做:
new Dao<Student>();
从 Spring XML 配置。
这能做到吗?如何?
阅读有关类型擦除的信息应该可以帮助您更好地理解这一点。
在运行时,泛型类的类型参数将被擦除。这意味着,正如cletus所说,Java中的泛型基本上是语法糖 - 它们只是一个编译时功能。
由于Spring是在运行时实例化对象,因此实际上可以自由实例化任何类型的对象 - 实际上,没有什么可以阻止它在某些方法中创建a并传入类型,并在另一个方法中传递类型。Dao
Dao
Student
Teacher
所以基本上答案是,Spring不知道该类型是要参数化的,并且无法对其进行任何操作。Dao
你不能这样做,你不能这样做的原因是它实际上没有任何意义。我的意思是Java泛型是语法糖,所以你用什么类型创建Bean是无关紧要的。你可以把它注入到任何带有Dao(或Dao)的东西中,此时它将使用它被注入的任何类型的隐式投射。