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

2024-01-21

当声明链式调用的方法时,通常它returns this在该方法的末尾。

所以我声明:

public class Foo {

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

}

And:

public class Bar extends Foo{

      /* OTHER STUFF */
}

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

可以声明该方法以自动返回Bar的参考无需重写 Bar 中的方法为了清晰、简洁和可维护性?

Thanks


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

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

基本上,需要对“这种类型”有某种语言支持,其中该类型的唯一有效表达式是null and this。那不存在,所以你只能重写:

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

Or:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中对象的链式调用和继承 的相关文章

随机推荐

  • 使用 Symfony 强制使用 HTTPS

    我试图强制所有对 example com checkout 的请求使用 HTTPS 我读了Symfony 文档 http symfony com doc current cookbook security force https html并
  • 是否有不同步的 Java Stack 的直接替代品?

    我有一个使用堆栈数据结构的大型代码库 由我编写 这是为了方便起见 我有时将其用作堆栈 有时将其用作向量 列表 然而 经过性能审查后 我们决定不想为同步安全支付额外费用 我现在需要用非同步结构替换这个结构 并且在代码中多次提到 我很高兴发现
  • golang中资源应该保存在哪里

    我的应用程序使用 json 配置文件和其他资源 我应该将它们放置在项目层次结构中的哪个位置 我找不到答案http golang org doc code html http golang org doc code html 如何编写Go代码
  • Angular.js ui-grid 自定义日期过滤器

    我正在使用角度网格 ui grid 位于ui grid info http ui grid info 我正在尝试制作一个自定义过滤器 它将使用日期输入控件按日期过滤网格 一个用于小于 一个用于大于 我似乎可以在 columnDefs 中使用
  • 动态更改IP地址?

    考虑一下这个案例 我想经常抓取网站 但有一天 限制后我的IP地址被阻止了 那么 如何动态更改我的IP地址或任何其他想法 一种方法使用Scrapy http scrapy org 将使用两个组件 RandomProxy and RotateU
  • 了解oauth 2.0中客户端id、客户端密钥的需求

    我有一个网站 要求用户通过提供电子邮件和密码来登录以获得访问令牌 其中访问令牌令牌用于访问 api 然后 用户可以在访问令牌提供的范围内获得读 写的访问权限 那么 这里我想了解的是 client id 和 client Secret 在这种
  • Automapper、泛型、dto funtimes

    这是交易 我有一个报告设计器 用户可以根据一些预定义的数据集创建报告 他们可以选择要包含在报告中的一组列 然后在运行报告时 通过使用自动映射器将 NHibernate 集合映射到 dto 类集合来创建 IList 这样做的问题是 DTO 集
  • E:软件包“oracle-java8-installer”没有安装候选者

    我尝试使用以下命令安装 java8 sudo add apt repository ppa webupd8team java sudo apt get update sudo apt get install oracle java8 ins
  • React Bootstrap 弹出窗口在外部点击时关闭

    React Bootstrap 提供了一个弹出窗口控件 我希望在单击弹出窗口外部时将其关闭 其方式与模态的工作方式类似 默认情况下点击开箱即用即可将其关闭 有没有办法使用 ReactBootstrap 来做到这一点 或者我需要自定义代码吗
  • SwiftUI – 如何将 NavigationView 的标题设置为大标题(或小标题)?

    使用 SwiftUI 如何更改导航栏的标题大小 在标准标题或大标题之间进行选择 SwiftUI iOS 14 NavigationView TopLevelView navigationBarTitleDisplayMode inline
  • 函数声明与函数定义

    如果我有这个原型 int bar int 对于编译器我是宣告标识符bar 如果我有这样的定义 int bar int a 对于编译器我是defining标识符bar 一般来说 定义会为对象分配存储空间 但是 函数声明也是如此吗 另外在这种情
  • C++:提取分析数学表达式的符号/变量

    我有用户可以提供的表达式 例如 a sin w t a b c x 2 y 2 2 我愿意just获取那里的变量列表 我不需要做任何替换 所以 对于第一个公式 它是 a w t 对于第二个 a b c 对于最后一个 x y 该表达式主要是为
  • 使用 yum 安装同一软件包的多个版本? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一台安装了奇怪的内部版本 MySQL 的服务器 并且想在该节点上安装collectd 不幸的是 collectd 依赖于 MySQL 并且安装失败
  • 用于将数据从业务机会复制到相关自定义对象的自定义按钮

    我有一个自定义对象 用于映射到机会的产品设置 这是一种一对多的关系 一个机会映射到许多设置对象 但一个设置对象仅映射到一个机会 机会有一些设置字段需要充当相关自定义对象的默认值 不幸的是 我不能只在公式中指定它们 出现错误 我想做的是有一个
  • 使用钩子时等待状态更新

    如何使用 Hooks 等待状态更新 当我提交表格时 我需要检查是否termsValidation在运行一些附加代码之前为 false 如果状态刚刚发生变化 它就不会注意到这一点 import React useState from reac
  • 在常见情况下什么时候适合使用 Core Animation 而不是 UIView 动画

    这与许多小错误有关 这些小错误可能被一个人通常认为是次要的 但另一个人则认为是重大错误 我越来越注意到的是 当使用所有口味时UIView animateWithDuration 它实际上修改了不必要的东西 例如我的视图的多个属性 以执行简单
  • 如何从右向左滑动切换div?

    请看这个小提琴http jsfiddle net MKwwH http jsfiddle net MKwwH 我想要链接images link从右向左滑动切换 document ready function hidden hide soun
  • 我可以使用“com.apple.springboard.lockcomplete”通知吗?

    我试图找到设备锁定状态 因为 UIApplicationState 在锁定设备时给出了错误的状态 它给出了 UIApplicationStateActive 几秒钟 我找到了一种解决方案达尔文通知 https developer apple
  • Visual Studio 还是 GCC? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java 中对象的链式调用和继承

    当声明链式调用的方法时 通常它returns this在该方法的末尾 所以我声明 public class Foo public Foo setTitle String title return this And public class