gpt4 book ai didi

Java - 引用 "to be resolved later"

转载 作者:行者123 更新时间:2023-12-01 21:35:09 27 4
gpt4 key购买 nike

有没有办法在 Java 中定义“指向指针的指针”?

即我正在考虑这样的事情......

class Main
{
public static void main (String[] args) throws java.lang.Exception
{
Test[] test = new Test[20];

Test t = test[10];

test[10] = new Test(7);

System.out.println(t.whatever);
}
}

class Test{
public Test(int i){this.whatever = i;}
Integer whatever;
}

这显然会在 Java 中产生 nullptr 异常。我怎样才能保持更新呢?

即如果这是 C,我可能会这样写:

typedef struct{
int whatever;
} Test;

int main(int argc, char* argv[]) {

Test *test = malloc(sizeof(*test) * 20);
Test *t = &test[10];

test[10].whatever = 7;
printf("%d\n",t->whatever);

return 0;
}

我考虑这样的事情的原因是我试图从文件中解析一棵树,其中每个节点的子节点仅由节点 ID 数组给出。

如果我可以忽略 child 可能已经或可能没有被解析的事实,并且只指向一个数组条目(与 child 的nodeID相对应的索引),从而放弃再次遍历所有节点的需要,那将会很方便稍后只是为了插入子指针。

我考虑创建一个包装器实例数组,并使用对它们的引用。我可以做得更好吗?

最佳答案

不,不幸的是,这在java中无法工作,因为java中不存在指针,唯一的方法是使用对象包装器,例如AtomicReference

注意: AtomicReference 不适合用于此类需求,因为它基于不必要的 volatile 变量就你而言,但这就是想法。

关于Java - 引用 "to be resolved later",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004901/

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