使Java父类方法返回子类对象的方法
从子类对象调用该方法时,是否有任何优雅的方法可以使位于父类中的Java方法返回子类的对象?
我想在不使用其他接口和方法的情况下实现此功能,并在没有类强制转换,辅助参数等的情况下使用此功能。
抱歉,我不太清楚。
我想实现方法链,但是父类的方法存在问题:调用父类方法时,我无法访问子类方法… 我想我已经提出了我的想法的核心。
因此,方法应返回类的this
对象this.getClass()
。
回答:
如果您只是在寻找针对已定义子类的方法链,那么以下方法应该有效:
public class Parent<T> { public T example() {
System.out.println(this.getClass().getCanonicalName());
return (T)this;
}
}
如果愿意,可以是抽象的,然后是一些指定通用返回类型的子对象(这意味着您不能从ChildA访问childBMethod):
public class ChildA extends Parent<ChildA> { public ChildA childAMethod() {
System.out.println(this.getClass().getCanonicalName());
return this;
}
}
public class ChildB extends Parent<ChildB> {
public ChildB childBMethod() {
return this;
}
}
然后像这样使用它
public class Main { public static void main(String[] args) {
ChildA childA = new ChildA();
ChildB childB = new ChildB();
childA.example().childAMethod().example();
childB.example().childBMethod().example();
}
}
输出将是
org.example.inheritance.ChildA org.example.inheritance.ChildA
org.example.inheritance.ChildA
org.example.inheritance.ChildB
org.example.inheritance.ChildB
以上是 使Java父类方法返回子类对象的方法 的全部内容, 来源链接: utcz.com/qa/433108.html