Vector2 myVector = new Vector2(2, 1);
myVector *= 2;
Is this possible?
No. Not in Java. Other languages like C++ support that. Called Operator overloading because you redefine what the *-operator does.
In Java you have to use explicit methods. Like
myVector.multiplyBy( 2 )
and it would look like
class Vector2 {
public int x, y;
public Vector2(int x, int y) {
this.x = x;
this.y = y;
}
public void multiplyBy(int value) {
this.x *= value;
this.y *= value;
}
}
or like
public Vector2 multiplyBy(int value) {
return new Vector2(this.x * value, this.y * value);
}
And then you would do
Vector2 myMultipliedVector = myVector.multiplyBy( 2 );
with the advantage that you don't modify the original object but create a new one with a different value.
Groovy (language that is derived from Java & runs on the JVM) takes that idea and actually allows you to write someObject *= 2 as long as you provide a method that must be called multiply. Maybe one day that makes it into Java. Maybe not. But basically all legal Java code is also legal Groovy code so you could do it right now, in a program that looks like Java and runs in the Java VM.