java - 在 Java 中为自定义类定义 +=

标签 java operator-overloading

我正在制作一个简单的 2D 物理引擎,这是我制作任何类型的物理引擎的第一次尝试。不幸的是,对于任何热衷于教授物理的人来说,这不是一个与物理相关的问题。我只是想知道是否有一种方法可以定义一些简单的东西,例如自定义类的添加。例如,我创建了一个名为 Vector2D 的类。如果我有一个速度 vector 和一个加速度 vector ,最简单的方法是使用以下代码:

Vector2D velocity = new Vector2D(xAxisVelocity, yAxisVelocity);
Vector2D acceleration = new Vector2D(xAxisAcceleration, yAxisAcceleration);
void update() {
    velocity += acceleration;
}

但是,由于速度和加速度不是原始类型,所以我不能将它们简单地相加。据我现在所知,我必须将它们的组件添加在一起,如下所示:

velocity.x += acceleration.x

..等等..

我想知道的是:有没有一种方法可以定义类的加法,类似于toString()可以被覆盖吗?

为了澄清这一点,对我来说,创建一个将两个 vector 相加的方法并不是什么大不了的事,我只是想知道是否可以覆盖。

最佳答案

不,Java 中没有运算符重载。这是一种设计选择,也是我们必须忍受的。

参见Why doesn't Java offer operator overloading进行更多讨论。

关于java - 在 Java 中为自定义类定义 +=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820909/

相关文章:

java - 如何通过 JNI 调用 Java 方法,让 JVM 垃圾收集参数?

c++ - 当我有一个指向对象的指针时,重载的 'dereference' 或 'member of pointer' 运算符不会运行

c++ - 如何避免这句话在模板 SFINAE 中是错误的?

c++ - 为什么我不能创建一个结构对象类型的优先级队列?

Java 方法错误地在 kotlin 中自动重载

c++ - 运算符 << 在 C++ 中重载

java - 重定向后重做原始请求 getRequestDispatcher

java - 简单的 Java 文本文件无法正确解析

java - 在 JTabbedPane 中更改 Activity 选项卡颜色

java - Spring 与 EJB。 Spring可以替代EJB吗?