2009-02-18 88 views

回答

55

阅读约type erasure应该会帮助你更好地理解这一点。

在运行时,泛型类的类型参数是已被擦除。意义,正如cletus所说,Java中的泛型基本上是句法糖 - 它们只是编译时的特征。

因为春天是在运行时实例化对象,它实际上是随意实例化任何类型的Dao - 实际上,没有什么与创建Dao并传递Student类型的一些方法和Teacher类型阻止它另一个。

所以基本上的答案是,Spring不知道Dao类型是用来参数化的,不能对它做任何事情。

8

你不能这样做,你无法做到的原因是它实际上没有任何意义。我的意思是,Java泛型是语法糖,所以你创建一个bean的类型是不相关的。你可以将它注入任何采用Dao(或Dao)的任何东西,在这一点上它将使用隐式投射它注入的任何类型。