有没有更简单的方法来定义对象内的对象?

时间:2019-10-21 00:34:54

标签: java class object

所以我有课

public class Box {
    int index;
    static int amount;
    Box thisbox;
    Cargo thiscargo;
    Box(){
        index = amount;
        amount++;
    }
}

在另一堂课中,我将定义框:

public class dostuff {
    public static void main(String[] args) throws NoSuchMethodException {
        Box box = new Box();
        box.thisbox = new Box();
        box.thisbox.thisbox = new Box();
        box.thisbox.thisbox.thisbox = new Box();
        box.thisbox.thisbox.thisbox.thisbox = new Box();
    }

}

如您所知,box.thisbox.thisbox.thisbox.thisbox变得很烦人。我想知道是否可以让循环更轻松地访问box.thisbox.thisbox.thisbox而不必重复三遍.thisbox。在某些情况下,我必须在框内定义30个框,并且我不想复制和粘贴“ thisbox”的内容很多次。真的会喜欢一些帮助。谢谢! 编辑:我不能使用数组列表。不要问...

2 个答案:

答案 0 :(得分:1)

只要您知道终止点,即直到您要继续创建框对象时,就可以用几种方法来完成。这是这样做的方法之一。

使用递归

public static void main(String[] args) {
    Box box = new Box();
    createBox(box);
}

public static void createBox(Box box) {
        while(box.amount != 10){
        box.thisbox = new Box();
        createBox(box.thisbox);
    }
}

答案 1 :(得分:0)

您可以编写某种深度的递归方法。

类似这样的东西

public Box getNthBox(Box box, int depth) {
    If (depth == 0) {
        return box;
    } 

    return getNthBox(box.getBox(), depth - 1);
}

您需要一个getBox()方法,但该方法返回Box字段。