Hashtable<String, Hashtable<String, HashSet<String>>> test =
new Hashtable<String, Hashtable<String, HashSet<String>>>();
test.put("1", new Hashtable<String, HashSet<String>>());
Hashtable<String, HashSet<String>> actual = test.get("1");
actual.put("3", new HashSet<String>());
//test.put("1", actual);
HashSet<String> expected = test.get("1").get("3");
if ( expected == null ) {
System.out.println("DIE");
}
根据上面的代码,我认为DIE会打印出来。但显然,实际上仍然是对测试内部对象的引用。我的印象是我必须“把”放回到实际测试中(由已注释掉的行显示)。是否存在关于实际是否为引用的权威文档?
答案 0 :(得分:2)
对象始终作为Java中的引用传递。来自chapter 4 of JLS:
引用类型是类类型,接口类型和数组类型。 ...参考值(通常只是引用)是指向这些对象的指针。