0
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が印刷されると思いました。しかし、明らかに、実際にはテスト中のオブジェクトへの参照はまだあります。私は、実際にテストに戻す必要があるという印象を受けました(コメントアウトされた行で示されています)。実績が参考であるかどうかについての権威ある文書はありますか?ハッシュテーブルget関数からの戻り値は参照ですか?
-1000 - オブジェクトはJavaでは参照渡しされません。オブジェクト参照は値によって渡されます。これは非常に重要な違いです。 –
あなたは正しいことを言おうとしていると思いますが、Javaでは「参照渡し」はありません。参照は値渡しとなります。 – ColinD
http://javadude.com/articles/passbyvalue.htm http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html http://www.yoda.arachsys .com/java/passing.htmlなど。この神話を解釈してはいけません。 –