java - Java 中对象的链式调用和继承

标签 java android

当为链式调用声明一个方法时,通常它会在方法结束时返回这个

所以我声明:

public class Foo {

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

}

和:

public class Bar extends Foo{

      /* OTHER STUFF */
}

如果您调用 new Bar().setTitle("Test"),它会返回一个 Foo 的引用。

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

谢谢

最佳答案

Is possible to declare the method in order to return automatically a Bar's reference without override the method in Bar for clarity, brevity and maintainability?

没有。你可以连接一些奇怪的泛型 - Foo<T extends Foo>或类似的 - 但它不会很令人满意。

基本上,“这种类型”需要某种语言支持,这种类型的唯一有效表达式是 nullthis .那不存在,所以你只能重写:

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

或者:

public Bar setTitle(String title) {
    return (Bar) super.setTitle(title);
}

这只是继承最终成为一种痛苦的情况之一:(

关于java - Java 中对象的链式调用和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13333127/

相关文章:

java - Firebase 身份验证 createUserWithEmailAndPassword 在具有电子邮件变量的物理设备上失败

android - 用几行代码设置 LayoutParams

java - Spring 社交和 Facebook API 更改

java - 如何使用 Jersey 缓存响应?

Java通过多线程共享对象 - 需要设计模式

android - Java - 将 16 位 Mono PCM 原始数据转换为立体声

android - ♥ 和 ♦ 在 HTML 中在 Android 上显示为黑色,即使颜色在 CSS 中设置为红色

java - Spring Batch 将处理后的记录写入文件

java - 使用 https 和 TLS 检查 JMeter HTTP 请求中使用的密码套件

android - Android 手机中的内部版本号表示什么。它们是如何形成的。他们是否指向某些我无法理解的含义?