链接在Java中调用对象和继承

Add*_*dev 2 java android

当声明链式调用的方法时,通常returns this在方法结束时.

所以我宣布:

public class Foo {

    public Foo setTitle(String title){
        ...
        return this;
    }

}
Run Code Online (Sandbox Code Playgroud)

和:

public class Bar extends Foo{

      /* OTHER STUFF */
}
Run Code Online (Sandbox Code Playgroud)

如果你打电话,new Bar().setTitle("Test")它会返回一个Foo参考.

为了清晰,简洁和可维护性,是否可以声明方法以自动返回Bar引用而不覆盖Bar中的方法

谢谢

Jon*_*eet 6

为了清晰,简洁和可维护性,是否可以声明方法以自动返回Bar的引用而不覆盖Bar中的方法?

不,你可以联系一些奇怪的仿制药 - Foo<T extends Foo>或类似的 - 但它不会很令人满意.

基本上需要为"this type"提供一些语言支持,其中该类型的唯一有效表达式是nullthis.那不存在,所以你留下了压倒一切:

public Bar setTitle(String title) {
    super.setTitle(title);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

要么:

public Bar setTitle(String title) {
    return (Bar) super.setTitle(title);
}
Run Code Online (Sandbox Code Playgroud)

这只是继承最终成为痛苦的案例之一:(