使Java父类方法返回子类的对象的方法
当从子类对象调用 Java 方法时,是否有任何优雅的方法使 Java 方法位于父类返回子类的对象中?
我想在不使用其他接口和额外方法的情况下实现它,并且在没有类转换,辅助参数等的情况下使用它。
更新:
对不起,我不太清楚。
我想实现方法链接,但我对父类的方法有问题:当我调用父类方法时,我失去了对子类方法的访问权限...我想我提出了我的想法的核心。
因此,这些方法应返回类的对象。this
this.getClass()
当从子类对象调用 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
你想实现什么?这听起来像是个坏主意。父类不应对其子类一无所知。这似乎非常接近于打破里氏替代原则。我的感觉是,通过改变一般设计,你的用例会更好,但如果没有更多的信息,很难说。
很抱歉听起来有点迂腐,但当我读到这样的问题时,我有点害怕。