Java是否支持运算符重载?

Pat*_*rio 5 java object operator-keyword

我正在开发一个具有名为Vector2的对象的项目

public static class Vector2 {
        public Vector2 (float x, float y) {
            this.x = x;
            this.y = y;
        }

        public float x;
        public float y;

        public static Vector2 ZERO = new Vector2 (0, 0);
        public static Vector2 FORWARD = new Vector2 (0, 1);
        public static Vector2 LEFT = new Vector2 (1, 0);

        public static float Distance (Vector2 a, Vector2 b) {
            return (float) Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));
        }
    }
Run Code Online (Sandbox Code Playgroud)

并希望做到以下几点:

Vector2 a = new Vector2 (2.32, 453.12);
Vector2 b = new Vector2 (35.32, 532.32);

Vector2 c = a * b;

// c.x = 2.32*35.32
// c.y = 453.12*532.32

float num = 5;
c = a * num;

// c.x = 2.32*5
// c.y = 453.12*5
Run Code Online (Sandbox Code Playgroud)

这可能吗?如果是这样我怎么能这样做,它叫什么?提前致谢.

Nad*_*far 5

不,Java不支持运算符重载.

作为一个FYI:如果你可以使用其他语言,那么C++和非常类似的C#支持运算符重载.如果您的项目(例如Ray Tracing)有很多与矢量相关的操作,那么我实际上会考虑像C#这样的语言.