このクラスを想像してください:
public class ObjectCreator<T> {
private Class<T> persistentClass;
public ObjectCreator(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
public T create() {
T instance = null;
try {
instance = persistentClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return instance;
}
}
次に、ドメイン オブジェクトでサブクラス化します。
public class PersonCreator extends ObjectCreator<Person>{
/**
* @param persistentClass
*/
public PersonCreator() {
super(Person.class);
}
}
すべてがうまく機能します...しかし、別の汎用ドメインオブジェクトでサブクラス化しようとすると、コンパイラは不平を言います:
public class MessageCreator extends ObjectCreator<Message<String>>{
/**
* @param persistentClass
*/
public MessageCreator() {
super(Message.class);
}
}
コンストラクター
ObjectCreator<Message<String>>(Class<Message>)
は未定義です MessageCreator.java
これは大きな制限だと思います。なぜこれが禁止されているのですか?
回避する方法はありますか?
マッシモ