java 获取包含在自身中的对象的所有示例

e4eetjau  于 2023-10-14  发布在  Java
关注(0)|答案(3)|浏览(81)

我甚至不知道如何真正命名它。我在Java中有一个类,它创建了自己的一个示例,并将它们存储在一个变量中,然而,该示例也创建了自己的一个示例,并将其存储在一个变量中。我想做的是把所有的示例放到一个列表中。
我真的想不出一个解决办法。我正在做这样的事情:

List<MyClass> myclasses = new ArrayList<>();
MyClass myclass = new MyClass();
myclasses.add(myclass);
myclasses.add(myclass.createdinstance);
myclasses.add(myclass.createdinstance.createdinstance);
...

永远这样下去没有意义
注意:它不会无限地创建这些示例,所以我并不想在其中存储无限数量的MyClass。

oknrviil

oknrviil1#

你可以创建一个while循环和一个buffer变量,你将在其中存储你要推到列表中的实际示例,然后你继续循环,直到没有更多的嵌套示例,或者换句话说,属性为null。这样的事情

MyClass buffer = myclass;
while(buffer) {
   myclasses.add(buffer);
   buffer = myclass.createdinstance;
}
xpszyzbs

xpszyzbs2#

使用递归函数将对象添加到列表中。

void recursiveList(List<Object> myList, Object myObjectWAtrribute) {
    if (myObjectWAtrribute != null && myObjectWAtrribute.getCreatedinstance() != null) {
        myList.add(myObjectWAtrribute.getCreatedinstance());
        recursiveList(myList, myObjectWAtrribute.getCreatedinstance());
    }
}
List<MyClass> myclasses = new ArrayList<>();
MyClass myclass = new MyClass();
// add the first element
myclasses.add(myclass);
// get all subelements
recursiveList(myclasses, myclass);
qnzebej0

qnzebej03#

我可以自己做:

List<MyClass> classes = new ArrayList<>();
for(MyClass myclass = this; myclass != null; myclass = myclass.anotherinstance) {
    classes.add(myclass);
}

相关问题