У меня есть небольшая проблема с Java (будучи программистом на С++).
У меня есть 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.
Это позволит мне обобщить некоторые методы, которые мне нужно реализовать в каждом из них, который ужасен.
Спасибо!
UPDATE
Я использую Dozer для преобразования объекта Hibernate домена в версию Serializable. Я не хочу, чтобы клиент знал об этом, поэтому клиент видит только класс Пациент. На стороне сервера я выполняю преобразования.
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.
Может быть, я просто слишком смущен java.
Спасибо