我有一个类,看起来像这样:从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)的任何东西,在这一点上它将使用隐式投射它注入的任何类型。