我有一个声明为抽象的类,许多其他类都从该类继承(我可能未实现某些类)。这些类的名称都有记录,因此,我必须使用“ classForName”实例化它们,并将它们声明为它们的超类:
//ParentClass is abstract. ChildClass extends and implements ParentClass.
Class classLoader = Class.forName(name); //name is "ChildClass", that extends ParentClass.
ParentClass object = (ParentClass)classLoader.newInstance(); //A ChildClass Object casted as its Parent class (ParentClass).
嗯,我可以使用超类的已知方法。在数据库中保存数据时出现问题。我知道Hibernate支持多态性,但是我开始怀疑我会坚持这种立场,因为它始终将对象保持为“ ParentClass”类型,而我却失去了关于它们的类型的参考是(我想从数据库中将对象作为子类型加载,特别是因为“ ParentClass”是抽象的)。我已经尝试了一切,在Hibernate中进行了所有类型的继承(JOIN,SINGLE_TABLE ...),但是没有办法。
是否可以保存有关所调用对象类型的信息?我知道将对象声明为子类时可以执行此操作:
ChildClass obj = new ChildClass(); //Works fine. You can see difference with my case above
...但是我还没有发现任何有关这种声明对象的方法。
非常感谢您的帮助
J。
好吧,我的错。如果您不将子类放在映射配置文件中,它将采用父映射。
对不起。