所以我在让我的属性在超类类型场景中正确设置时遇到了一些问题。
我有2个班级,因此B班是A班的专业版,让我们说......
public class A {
private String name;
private int id;
...
}
public class B extends A {
private Date time;
private int status;
...
}
现在我要做的是使用一个方法,用于从结果集中设置A中的属性,而是将它们设置在B的实例中。
public A setProperties(ResultSet rs) {
A a = new A();
a.setName(rs.getString(...));
...
return a;
}
我已经尝试从此获得回报并将其作为B投射,但当然并非所有A都是B的......所以这不起作用。我还尝试在setProperties
方法中添加另一个参数,以便它接收A并返回A,这样我就可以使用多态来获取我的B,但随后我的所有值都被删除了。
我在这里不知所措,我们非常感谢任何建议。
答案 0 :(得分:6)
在超类中声明方法。子类将覆盖此方法,然后调用super.foo(ResultSet rs)
,其中foo(...)
是重写方法。其中,您可以解析ResultSet
并设置对象的字段。
示例 -
class Foo{
void setProperties(final ResultSet rs){
// do stuff
}
}
final class Bar extends Foo{
@Override
final void setProperties(final ResultSet rs){
// do stuff
super.setProperties(rs);
}
}
有关详细信息,请参阅Using the Keyword super。