java 类 方法继承_java – 在方法重写中返回继承的类而不是超类
我有一個(gè)看起來像這樣的類結(jié)構(gòu):
class Parent {
public Parent(int property) { /* use property */}
}
class Son extends Parent {
public Son(int parentProperty, String sonProperty) {
super(parentProperty);
/* use son property */
}
}
我想為這兩個(gè)類創(chuàng)建構(gòu)建器,以便:
class ParentBuilder {
protected int parentProperty;
public ParentBuilder parentProperty(int parentPropertyValue) {
parentPropertyValue = parentPropertyValue;
return this;
}
public Parent build() {
return new Parent(parentProperty);
}
}
class SonBuilder extends ParentBuilder {
private String sonProperty;
public SonBuilder sonProperty(String sonProperty) {
this.sonProperty = sonProperty;
return this;
}
@Override
public Son build() {
return new Son(parentProperty, sonProperty);
}
}
但這會導(dǎo)致以下問題:
SonBuilder sonBuilder = new SonBuilder();
sonBuilder.sonProperty("aString").build(); // this works and creates Son
sonBuilder.sonProperty("aString").parentProperty(1).build(); // this works and creates Parent instead of Son
sonBuilder.parentProperty(1).sonProperty("aString").build(); // this doesn't work
我知道我在挑剔,這可以通過不返回這個(gè)來解決(即沒有方法鏈接),但我想知道是否有一個(gè)優(yōu)雅的解決方案.
編輯
似乎“優(yōu)雅”這個(gè)詞有點(diǎn)混亂.
“優(yōu)雅”是指一種允許方法鏈接而不涉及鑄造的解決方案.
總結(jié)
以上是生活随笔為你收集整理的java 类 方法继承_java – 在方法重写中返回继承的类而不是超类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java8 ie_Java8语法糖之La
- 下一篇: lg手机历史机型_华为后,又一中国芯崛起