You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java类能否定义操作多个自身实例的实例方法?

不可变Size类plus方法实现说明
  • 你的需求理解没有偏差,用实例方法实现两个Size对象的加法是Java生态中非常通用的常规实现方式,完全符合编码惯例。
  • 实例方法不需要显式把自身作为入参:实例方法隐式持有当前对象的this引用,可以直接访问当前实例的所有字段,只需要接收另一个同类型的Size对象作为入参即可。
  • 因为Size是不可变类,plus方法绝对不能修改当前实例或者入参实例的字段值,必须将两个对象的s字段相加后,生成一个全新的Size实例返回。这种实现逻辑和JDK自带的不可变类(比如String、BigInteger、LocalDateTime)的运算方法逻辑完全一致。

标准实现参考

// 类加final禁止继承,避免子类破坏不可变特性
public final class Size {
    // 字段私有final修饰,初始化后不可修改
    private final int s;

    public Size(int s) {
        this.s = s;
    }

    // 仅提供getter,不提供任何修改字段的方法
    public int getS() {
        return s;
    }

    public Size plus(Size other) {
        if (other == null) {
            throw new IllegalArgumentException("相加的Size参数不能为null");
        }
        // 运算后返回全新实例,不改动原有对象的状态
        return new Size(this.s + other.s);
    }
}

补充说明:如果采用静态方法实现plus,才需要同时传入两个Size实例作为参数,但这种写法的语义流畅度远不如实例方法——实例方法调用a.plus(b)完全贴合自然语言中“a加b”的表达逻辑,可读性更强,也是业务开发中优先选择的实现方式。

内容的提问来源于stack exchange,提问作者jphuong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:15:36