Задать вопрос
@Mikhri

Как в Java обратиться к имени экземпляра класса в методе, расположенном в теле этого же класса?

Что имею в виду:

Допустим, в пределах одного пакета есть класс Dog:
package tpack;
public class Dog {
    String name;
    public Dog (String name) {
        this.name=name;
    }
    public void bark() {
        System.out.println(name + " says: 'Woof-woof!'");
    }
}

И есть main:
package tpack;
public class Main {
	public static void main (String[] args) { 
            Dog dog1 = new Dog("Butch");
            dog1.bark();
	}
}

В данном примере вывод при запуске main:
Butch says: 'Woof-woof!'


А мне нужно, чтобы было:
dog1 says: 'Woof-woof!'

но так, чтобы ничего при этом не менять в main.

Т.е. мне нужно как-то внутри самого класса Dog обозначить, что при вызове метода .bark() я хочу видеть в результате его работы имя конкретного объекта класса Dog, из которого вызывается этот .bark().

Возможно ли так сделать, и если да - как?
  • Вопрос задан
  • 448 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Сделать так невозможно.
имя конкретного объекта класса Dog, из которого вызывается этот .bark()

У объекта нет имени. Есть переменная, в которой лежит ссылка на объект, у этой переменной есть имя на этапе компиляции. В байткоде никаких имён переменных нет. Ссылки на один и тот же объект могут лежать в разных переменных, и даже в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы