我有一个名为spring.mvc.view.suffix=.jsp
HasDescription
它有getter和setter方法声明。
我有另一个名为public interface HasDescription {
String getDescription();
void setDescription(String description);
}
的抽象类来实现这个接口。
ResidentialProperty
我有另一个名为public abstract class ResidentialProperty
extends AbstractProperty
implements HasDescription {
.....
private String description;
@Override
public String getDescription() {
return description;
}
@Override
public void setDescription(String description) {
this.description = description;
}
}
的班级。在这个课程中,我已经委派了一个Flat
实例。我的想法是,使用这个实例,我想调用descriptionSupport
的getter和setter方法。我正在编写这个DescriptionSupport。请帮助我如何做到这一点?
ResidentialProperty
答案 0 :(得分:1)
不需要DescriptionSupport
助手类。 Flat
是ResidentialProperty
的子类型 - 它继承了其父级的setter和getter的实现,因此您不需要再次覆盖它们。
如果您仍需要覆盖这两种方法,则可以使用super
从父类调用其实现,例如super.setDescription(description)
。
答案 1 :(得分:1)
如果您真的想使用DescriptionSupport
,我建议进行一些修改:
public class Flat extends ResidentialProperty {
private final DescriptionSupport descriptionSupport = new DescriptionSupport();
@Override
public String getDescription() {
return descriptionSupport.getDescription(super::getDescription);
}
@Override
public void setDescription(String description) {
descriptionSupport.setDescription(super::setDescription, description);
}
}
public class DescriptionSupport {
public String getDescription(Supplier<String> s) {
return s.get();
}
public void setDescription(Consumer<String> c, String description) {
c.accept(description);
}
}
答案 2 :(得分:0)
我不确定我明白你要做什么,但你可以这样做:
public class Flat
extends ResidentialProperty {
private final DescriptionSupport descriptionSupport = new DescriptionSupport();
private final HasDescription superDesc = new HasDescription() {
@Override
public String getDescription() {
return getSuperDescription();
}
@Override
public void setDescription(String description) {
setSuperDescription(description);
}
};
@Override
public String getDescription() {
return descriptionSupport.getDescription(superDesc);
}
@Override
public void setDescription(String description) {
descriptionSupport.setDescription(superDesc, description);
}
private String getSuperDescription() {
return super.getDescription();
}
private void setSuperDescription(String description) {
super.setDescription(description);
}
}
public class DescriptionSupport {
public < T extends HasDescription> String getDescription(T property) {
return property.getDescription();
}
public < T extends HasDescription> void setDescription(T property, String description) {
property.setDescription(description);
}
}