Java中的数组构造函数链接

时间:2019-04-04 12:47:03

标签: java

当我尝试调用的构造函数应该使用传递给我从中调用的构造函数的值时,我似乎无法弄清楚如何链接构造函数。

我尝试过:

public BoundingBox(Point a, Point b)
{
    Point[] points = {a, b}
    this(points); 
}

但是我被告知对this的调用必须在构造函数的第一行。

我正试图调用此构造函数

public BoundingBox(Point[] input)
{
    //do some work
}

理想情况下,我可以链接这些构造函数。否则,我可能必须重组我的代码。

3 个答案:

答案 0 :(得分:13)

可以通过

this(new Point[] {a, b}); 

答案 1 :(得分:6)

您可以将两个构造函数替换为使用 Varargs

的以下构造函数
public BoundingBox(Point ... input){
    //do some work
}

关于 Varargs

的简介

一种方法可以使用vararg参数(可变参数- ment),就好像它是一个数组一样。不过,它与数组有点不同。 vararg参数 必须是方法的参数列表中的最后一个元素。这意味着您只被允许 每种方法只有一个vararg参数。

当调用带有vararg参数的方法时,您可以选择。您可以传递 数组,或者您可以列出数组的元素并让Java为您创建它。你甚至可以 省略方法调用中的vararg值,Java将为创建一个长度为零的数组 你。

答案 2 :(得分:3)

您可以使用创建数组的静态函数

static private Point[] createPointArray(Point a, Point b) 
{ 
    Point[] points = {a, b}
    return points;
}

public BoundingBox(Point a, Point b)
{
    this(createPointArray(a,b)); 
}