【问题标题】:Addition method to java class [duplicate]java类的添加方法[重复]
【发布时间】:2017-12-27 05:42:20
【问题描述】:

假设我有一个如下所示的 Money 类:

public class Money {
    private BigDecimal amount;
    private Currency currency;
}

我想将其中两个类加在一起,例如

Money m1 = Money(5);
Money m2 = Money(10);
Money m3 = m1+m2; // m3.amount should be 15

我将如何编写一个方法,以便我可以将其中两个 Money 类加在一起?

【问题讨论】:

  • 问题是?
  • 写一个加法。
  • 这在 Java 中是不可能的,因为 Java 没有用户定义的运算符重载 - 无法为两个 Money 对象定义运算符 +
  • Java 中没有 var
  • @sudo haha​​,我把我的 kotlin 和 Java 搞混了

标签: java methods


【解决方案1】:

Java不支持运算符重载,需要添加一个add函数:

public class Money {
    private BigDecimal amount;
    private Currency currency;

    public Money add(Money m) {
        Money res = new Money();
        if (!currency.equals(m.currency)) {
            throw new UnsupportedOperationException();
        }
        res.currency = currency;
        res.amount = m.amount.add(amount);
        return res;
    }
}

Money result = one.add(two);

【讨论】:

  • 由于货币不匹配,我不喜欢返回 null;在这个问题的上下文中很好,因为 OP 不关心它,但在实践中,理想情况下会有一种货币转换方法,这样使用 Money 类的人就不必经常检查 null。
  • 说的很对,已编辑
  • 我删除了Error 部分,因为它是无稽之谈,就像“这是程序员错误”一样。这种问题发生在运行时,在程序员无法控制的对象上。这显然是使用Exception 的情况,而不是Error
  • 谢谢。只需要知道Java不支持它。代码有点小故障,所以我用有效的方法更新了它。
  • 注意在类对象上使用==!=,它通常比较引用。错字是应该是equals 而不是equal
猜你喜欢
  • 2017-12-27
  • 2017-12-27
  • 1970-01-01
  • 2017-03-12
  • 2013-05-05
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多