Constructor overloading same arguments

Suppose I have class with 2 fields: x and y, of type double. Is it possible to define 2 constructors so constructor1 will create object setting its x property to what parameter in constructor tell and y to default and constructor2 vice versa?

public class Test {

    private int x;
    private int y;

    public Test(int x) {
        this.x = x;
    }

    public Test(int y) {
        this.y = y;
    }
}

I'm trying something like that and I know that it wont work because of overloading rules

Jon Skeet
people
quotationmark

No, you can't do that. Typically you'd do something like:

private Test(int x, int y) {
    this.x = x;
    this.y = y;
}

public static Test fromX(int x) {
    return new Test(x, 0);
}

public static Test fromY(int y) {
    return new Test(0, y);
}

You might want to consider that pattern (public static factory methods which in turn call private constructors) even when you don't have overloading issues - it makes it clear what the meaning of the value you're passing is meant to be.

people

See more on this question at Stackoverflow