Вы не можете, потому что у объекта нет имени. Для примера рассмотрим следующее:
A a = new A();
A b = a;
Какое теперь имя * экземпляра A
? Это "a"
? Это "b"
?
А что по этому поводу?
A[] a = new A[] { new A(), new A()};
a[0] = a[1];
Каково "имя" экземпляра в a[1]
?
Я хочу сказать, что вы не можете придумать полезное / пригодное для использования определение универсального имени объекта Java, которое работает в широком диапазоне контекстов. Проблемы, связанные с препятствиями, включают:
- Стабильность имени: «имя», которое изменяется при назначении ссылки на объект, не полезно.
- Одно имя: объект не должен иметь одновременно несколько имен.
- Реализуемость: любая система именования должна быть реализуемой без ущерба для производительности при обычном использовании объектов. AFAIK, это невозможно ... по крайней мере, на оборудовании, которое мы сейчас используем.
Самое близкое, что Java приходит к имени для объекта, - это значение "хэш-кода" объекта. Он не уникален, но обладает свойством, которое не будет изменяться в течение всего времени жизни объекта в текущей JVM. (Но даже хэш-код удостоверения стоит времени исполнения ... что, по мнению некоторых людей, делает его ошибкой проектирования Java.)
Разумный подход к именованию объектов заключается в том, чтобы (как уже говорили другие) добавлять поля "name" в соответствующие классы (или использовать существующий) и управлять именами самостоятельно, как требуется.
В более конкретном случае, когда «объект» на самом деле является JComponent
, нельзя полагаться, что данный компонент имеет имя. (Метод getName()
может возвращать null
.) Однако, если вы хотите, вы можете пересечь любую иерархию JComponent
и установить имя для любых компонентов в зависимости от ситуации.