私は次のようなクラスを持っています:
class Dao<T>{
...
}
私はこれをしたい:
new Dao<Student>();
springXML構成から。
それはできますか?どうやって?
型消去 について読むと、これをもう少しよく理解するのに役立つはずです。
実行時に、ジェネリッククラスの型パラメーターは消去されます。つまり、cletusが言ったように、Javaのジェネリックは基本的に構文糖衣構文であり、コンパイル時の機能にすぎません。
Springは実行時にオブジェクトをインスタンス化するため、実際には任意のタイプのDao
を自由にインスタンス化できます。実際、SpringがDao
を作成してStudent
タイプ、別のメソッドではTeacher
タイプ。
つまり、基本的に答えは、Springは、Dao
型がパラメーター化されることを意図しており、それを使用して何もできないことを認識していません。
あなたはそれをすることができません、そしてあなたがそれをすることができない理由はそれが実際には何も意味しないということです。つまり、Javaジェネリックはシンタックスシュガーなので、Beanを作成するタイプは関係ありません。Dao(またはDao)を使用するものなら何にでも注入でき、その時点で問題ありません。」注入されたタイプの暗黙的なキャストを使用します。