繁体   English   中英

在Java中使用数组链接的构造函数

[英]Constructor chaining with array in Java

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

我试过这个:

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

但我告诉调用this必须在构造函数的第一线。

我正在尝试调用此构造函数

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

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

这是可能的

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

您可以使用以下使用Varargs的构造函数替换它们

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

关于Varargs的简要介绍

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

使用vararg参数调用方法时,您可以选择。 您可以传入一个数组,也可以列出数组的元素,让Java为您创建它。 您甚至可以省略方法调用中的vararg值,Java将为您创建一个长度为零的数组。

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

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

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

暂无
暂无

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

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