我厌倦了以下Java代码,结果是" null"。我认为两个n是指向不同内存的相同指针(在主函数和测试函数中)。如果我在main函数中将n作为null启动,则将其分配给测试函数并希望在测试函数之外使用它(不返回n本身)。我该怎么办?
public class ttt {
static class LinkNode {
int val;
public LinkNode(int p) {
val = p;
}
}
public static void test(Set<LinkNode> n) {
n = new HashSet<>();
LinkNode a = new LinkNode(1);
n.add(a);
}
public static void main(String[] args) {
Set<LinkNode> n = null;
test(n);
System.out.println(n);
}
}
答案 0 :(得分:0)
当你做了
n = new HashSet<>();
您覆盖了传递到n
的{{1}}的值,但这并未重置test(...)
中n
的值
这意味着您已将main(...)
添加到您在a
中创建的新LinkNode
,但test(...)
中的n
引用了旧版main(...)
} null
退出LinkNode