gpt4 book ai didi

java - 类如何在作为构造函数时构建其其他实例

转载 作者:行者123 更新时间:2023-12-02 00:02:57 24 4
gpt4 key购买 nike

我想创建一个坐标类,当我实例化这个类时,它会自动构建它的6个相邻坐标,但是,当我这样做时,我总是遇到stackoverflow问题,而且我没有很好的方法来解决它。这是我的错误代码,你可以很容易地看到问题,构造函数本身包含它自己。所以我想知道如何解决这个问题

public class Coordinate {

private final int x;
private final int y;
private final Coordinate[] periperal;

/**
* The default constructor for Coordinate class that
* sets up the coordinate to the given integers.
*
* @param x value of x coordinate
* @param y value of y coordinate
*/

public Coordinate(){
final Coordinate adjacent1 = new Coordinate(x, y + 1);
final Coordinate adjacent2 = new Coordinate(x, y - 1);
final Coordinate adjacent3 = new Coordinate(x - 1, y + 1);
final Coordinate adjacent4 = new Coordinate(x - 1, y);
final Coordinate adjacent5 = new Coordinate(x + 1, y);
final Coordinate adjacent6 = new Coordinate(x + 1, y - 1);
Coordinate[] list = {adjacent1, adjacent1, adjacent1, adjacent1, adjacent1, adjacent1};
periperal = list;
}

我知道为什么我错了,但我不知道如何解决。有人可以帮助我吗?非常感谢。

最佳答案

构造函数中的第一行递归且无条件地创建另一个实例。实际上,这是一个调用自身的方法。

您需要一些条件来阻止此递归永远进行(或者更确切地说,直到您耗尽堆栈)。

为整个(无限)坐标系中的每个坐标创建一个实例是行不通的。您确定需要邻居坐标吗?我想,当/如果确实需要它们时,它们可以在稍后进行动态计算。

关于java - 类如何在作为构造函数时构建其其他实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14474668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com