Возвращаемое значение из функции get в Hashtable - это ссылка? - PullRequest
0 голосов
/ 19 ноября 2010
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 будет распечатан.Но, по-видимому, фактическим является ссылка на объект внутри теста.У меня сложилось впечатление, что я должен был «вернуть» фактическое в тест (показанный закомментированной строкой).Есть ли достоверная документация о том, является ли реальная ссылка или нет?

1 Ответ

2 голосов
/ 19 ноября 2010

Объекты всегда передаются как ссылки в Java.Из главы 4 JLS :

Типами ссылок являются типы классов, типы интерфейса и типы массивов.... Ссылочные значения (часто просто ссылки) являются указателями на эти объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...