我有一点Java问题(作为一名C++程序员).
我有2个相关的课程:
public class Patient() {
...
}
public class PatientPersistent extends Patient {
...
public void foo() {
System.out.println(super.getClass().toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出:
class org.example.smartgwt.server.model.PatientPersistent
有没有办法获得父类类型?即
class org.example.smartgwt.server.model.Patient.
这将允许我概括一些我需要在每个孩子中实施的方法,这些方法很糟糕.
谢谢!
我正在使用Dozer将我的域Hibernate对象转换为Serializable版本.我不希望客户知道这一点,因此客户只能看到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 …Run Code Online (Sandbox Code Playgroud) 我目前正在实现一个函数,使用超类作为参数.
例如:
private void foo(Parent parent) {
if(parent.getClass() == Child1.class) {
Child1 c1 = (Child1) parent;
System.out.println(c1.getChild1Attribute());
}
else if(parent.getClass() == Child2.class) {
Child2 c2 = (Child2) parent;
System.out.println(c1.getChild2Attribute());
}
else if(parent.getClass() == Parent.class) {
System.out.println(parent.getParentAttribute());
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个坏主意吗?
我在这里读到了一些线索,说使用getClass()或是instanceof不好的设计: