如何获取父基类对象 super.getClass()
我对Java有一点问题(作为一个C++程序员)。
我有2个相关的类:
public class Patient() {
...
}
public class PatientPersistent extends Patient {
...
public void foo() {
System.out.println(super.getClass().toString());
}
}
这将输出:
class org.example.smartgwt.server.model.PatientPersistent
有没有办法获取父类类型?即
class org.example.smartgwt.server.model.Patient.
这将允许我推广一些我需要在每个孩子身上实现的方法,这很糟糕。
谢谢!
更新
我正在使用 Dozer 将我的域 Hibernate 对象转换为可序列化版本。我不希望客户端知道这一点,因此客户端只能看到 Patient 类。在服务器端,我执行转换。
public class DataObject<Type> {
private static final Class<Object> DstType = Type;
public Object convert(Object srcData, final BeanFactory factory) {
Mapper mapper = (Mapper)factory.getBean("dozerMapper");
return (Object)mapper.map(srcData, DstType);
}
}
public class Patient() implements Serializable {
public Set foo;
}
public class PatientPersistent extends Patient {
public org.hibernate.collection.PersistentSet foo;
DataObject<Patient> converter = new DataObject<Patient>;
public Patient convertToSerializable(final BeanFactory factory) {
return (Patient)converter.convert(this, factory);
}
}
public class main() {
// This object is not serializable so I cannot send it to the client
PatientPersistent serializableBar = new PatientPersistent();
// Using Dozer to copy the data PatientPersistent -> Patient
// This will load the Dozer spring bean and copy as mapped
Patient copiedSerializableData = serializableBar.convertToPersistent(bar, factory);
}
我知道这段代码不起作用,但这只是为了表达我的观点。我希望能够将对象转换为可序列化的形式,以便我可以将其发送回客户端。这就是为什么我想给父母的类型。调用映射器将始终是同一回事,即源对象和 Dest.class。
也许我只是对java太困惑了。
谢谢