繁体   English   中英

buildFor 在 Java 和 class 内的 2 个构造函数

[英]buildFor in Java and 2 constructors inside a class

您好,我创建了一个 class ,其中有 2 个这样的构造函数:

public class Test {
    int speed;
    int id;
    int height = 0;
    Test(final int speed, final int id, final int height) {
        this.speed = speed;
        this.id = id;
        this.height = height;
    }
    public Test buildFor(final int speed, final int id) {
        return new Test(speed, id, 5);
    }
    public void show() {
        System.out.println(this.speed);
        System.out.println(this.id);
        System.out.println(this.height);
    }
}  

并且主要我尝试像这样创建一个 Object :

public static void main (String[] args) {
    System.out.println("Hello World!");
    Test testObject = new Test(4,4);
    testObject.show();
}

但它在这一行失败: Test testObject = new Test(4,4) ; BuildFor和这段代码有什么问题?

buildFor是一种方法,而不是构造函数。 因此,您不能像使用new关键字的构造函数那样调用该方法。

看起来您正在尝试链接您的构造函数。

正确的做法是:

public Test(final int speed, final int id) {
    this(speed, id, 5);
}

这是一个带有 2 个 arguments 的构造函数,它在内部调用另一个带有 3 个 arguments 的构造函数,传递它收到的 2 arguments,最后一个参数的默认值为 5。

您收到错误的原因是因为您将两个参数而不是三个参数传递给构造函数。 您可以为这种情况创建另一个构造函数:

public class Test {
    int speed;
    int id;
    int height = 0;
    Test(final int speed, final int id, final int height) {
        this.speed = speed;
        this.id = id;
        this.height = height;
    }
    Test(final int speed, final int id) {
        this.speed = speed;
        this.id = id;
    }
    public Test buildFor(final int speed, final int id) {
        return new Test(speed, id, 5);
    }
    public void show() {
        System.out.println(
            this.speed
        );
        System.out.println(
            this.id
        );
        System.out.println(
            this.height
        );
    }
}  

此外,方法 buildFor() 不是构造函数,因此如果您希望它运行,您必须手动调用它。

我希望这会有所帮助。 如果您有任何其他问题/说明,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM