Существует ли формальное или авторитетное определение для разыменования в Java?
Исходя из опыта C и C ++, я всегда предполагал, что разыменование в Java - это процесс доступа к объекту через его ссылку.
Например, «ref» является ссылкой, и она разыменовывается, когда используется для доступа к объекту Integer, на который она ссылается:
Integer ref = new Integer(7);
// Dereference "ref" to access the object it refers to.
System.out.println(ref.toString());
А исключения NullPointerException возникают в случае сбоя этого процесса разыменования:
Integer ref = null;
// Dereferencing "ref" causes an exception.
System.out.println(ref.toString());
Тем не менее, моя интерпретация противоречит одной из тем, которые тестируются на новых OracleJava SE 8 Programmer I экзамен (бета):
Объясните жизненный цикл объекта (создание, "разыменование путем переназначенияи сборка мусора)
Таким образом, согласно тому, кто бы ни создал экзамен по Java 8, разыменование в Java является актомпереназначение ссылки, а не актоценивая ссылку:
Например:
// Create an Integer object, and a reference to it.
Integer ref = new Integer(7);
ref = null;
// Now (according to Oracle?):
// - The reassignment means ref has been "dereferenced".
// - The dereferenced object is now eligible for Garbage Collection.
Погуглив вопрос, можно предположить, что определение Oracle используется более широко, но это не значит, что оно правильное, и единственное попадание в Google по запросу «разыменование путем переназначения» - это новый экзамен по Java 8! JLS на самом деле не проливает свет в любом случае.
Есть ли какое-либо формальное или авторитетное определение (в отличие от личных мнений) того, что разыменование действительно означает в Java? (То есть это относится к оценке или переназначению?)
Кажется странным, что два совершенно разных определения могут сосуществовать.