如何实例化一个在Spring框架中使用泛型的对象?

2022-09-01 04:27:51

我有一个看起来像这样的类:

class Dao<T>{
...
}

我想这样做:

new Dao<Student>();

从 Spring XML 配置。

这能做到吗?如何?


答案 1

阅读有关类型擦除的信息应该可以帮助您更好地理解这一点。

在运行时,泛型类的类型参数将被擦除。这意味着,正如cletus所说,Java中的泛型基本上是语法糖 - 它们只是一个编译时功能。

由于Spring是在运行时实例化对象,因此实际上可以自由实例化任何类型的对象 - 实际上,没有什么可以阻止它在某些方法中创建a并传入类型,并在另一个方法中传递类型。DaoDaoStudentTeacher

所以基本上答案是,Spring不知道该类型是要参数化的,并且无法对其进行任何操作。Dao


答案 2

你不能这样做,你不能这样做的原因是它实际上没有任何意义。我的意思是Java泛型是语法糖,所以你用什么类型创建Bean是无关紧要的。你可以把它注入到任何带有Dao(或Dao)的东西中,此时它将使用它被注入的任何类型的隐式投射。


推荐