如何获取父基类对象 super.getClass() [英] How to get the parent base class object super.getClass()
问题描述
我对 Java 有一个小问题(作为一名 C++ 程序员).
I have a little problem with Java (being a C++ programmer).
我有 2 个相关的课程:
I have 2 related classes:
public class Patient() {
...
}
public class PatientPersistent extends Patient {
...
public void foo() {
System.out.println(super.getClass().toString());
}
}
这将输出:
类 org.example.smartgwt.server.model.PatientPersistent
class org.example.smartgwt.server.model.PatientPersistent
有没有办法获取父类类型?即
Is there a way to get the parent class type? i.e.
类 org.example.smartgwt.server.model.Patient.
class org.example.smartgwt.server.model.Patient.
这将使我能够概括一些我需要在每个孩子身上实施的方法,这很糟糕.
This will allow me to generalize some methods which I need to implement in each child which is awful.
谢谢!
我正在使用 Dozer 将我的域 Hibernate 对象转换为可序列化版本.我不想让客户知道这一点,所以客户只能看到 Patient 类.在服务器端,我执行转换.
I'm using Dozer to convert my domain Hibernate object to a Serializable version. I don't want the client to know of this, so the client only sees the Patient class. On the server side I perform conversions.
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);
}
我知道这段代码不起作用,但这只是为了表明我的观点.我希望能够将对象转换到它的可序列化形式,以便我可以将它发送回客户端.这就是为什么我想给父母的类型.调用 mapper 总是相同的,一个源对象和一个 Dest.class.
I know this code does not work, but it's just to make my point. I would like to be able to convert the object to it's serializable form so that I can send it back to the client. That's why I would like to give the parent's type. Calling the mapper will always be the same thing, a source object and a Dest.class.
也许我对 Java 太困惑了.
Maybe I'm just too confused with java.
谢谢
推荐答案
getClass().getSuperclass()
但是不要使用这个.这当然是糟糕设计的标志.
But don't use this. It is certainly a sign of bad design.
这篇关于如何获取父基类对象 super.getClass()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!