Думай на Java

Манипуляции с ссылками


Передавая ссылку другому методу в качестве параметра, новая ссылка будет  продолжать указывать на тот же самый объект. Следующий простейший пример наглядно это демонстрирует:

//: Приложение а:PassReferences.java

// Передача ссылок.

public class PassReferences { static void f(PassReferences h) { System.out.println("h внутри f(): " + h); } public static void main(String[] args) { PassReferences p = new PassReferences(); System.out.println("p внутри main(): " + p); f(p); } } ///:~

В этом примере при выводе результатов на экран автоматически вызывается метод toString(), а PassReferences наследуется непосредственно из класса Object, без переопределения метода toString(). Таким образом, при распечатке названия класса объекта и его адреса (не ссылки, а физического адреса по которому размещается объект) используется метод toString() класса Object. Результат работы примера:

p внутри main(): PassReferences@1653748 h внутри f(): PassReferences@1653748

Как вы видете, p и h ссылаются на один и тот же объект. Это более эффективно чем дублирование самого объекта PassReferences лишь для передачи параметра методу, но в то же время сопряжено с серьезными проблемами.



Содержание раздела