2015-05-30 3 views
1

Когда объект создается, как я могу получить имя этого объекта?Как я могу получить имя объекта, когда он создан в java?

, например, давайте рассмотрим класс Book:

public class Book { 
    private String name; 
    private int pages; 

    public Book(String name, int pages) { 
     this.name = name; 
     this.pages = pages; 
    } 

    } 
// now i create an object of this class 
Book book = new Book("Java",100); 

я хочу, чтобы получить имя созданного объекта, который «книга», есть ли способ, чтобы получить его? Я попробовал функцию toString(), и она не работает, она печатает что-то вроде этого: @ 3d4eac69

+0

Что вы подразумеваете под "именем" объекта? Свойство 'name'? Название класса? Имя переменной, которую вы назначили? –

+1

Это кажется невозможным. – Andrew

+2

Объекты не имеют имен. Переменные выполняются, но объектов нет. Поймите, что на тот же объект, на который ссылается книжная переменная, может ссылаться целый ряд других переменных. Какая переменная представляет его имя? Или объект может быть частью массива или ArrayList и, следовательно, не должен быть частью «именованной» переменной. Итак, объекты не имеют имен. –

ответ

4
  1. Если вы имеете в виду name собственности, вы не можете с кодом, как написано. Вы должны были бы либо сделать name общественности, либо предоставить общественности поглотитель для него

  2. Если вы имеете в виду имя класса, было бы

    book.getClass().getName() 
    
  3. Если вы имеете в виду имя переменной вы назначили его (book), вы не можете, это не информация, доступная во время выполнения (вне встроенной отладки и отладки самоанализа).

+0

Хороший ответ, хорошее объяснение, почему невозможно получить (пункт 3) +1 – maskacovnik

+0

Я имел в виду третий вариант, поэтому это невозможно. – rainman

0

Вам необходимо создать метод getter в классе Book. Будет так:

public String getName() { 
    return this.name; 
} 

И тогда вы могли бы назвать:

book.getName(); 
0

Использование:

book.getClass().getName(); 

Каждый объект в Java имеет getClass() метод:
getClass() documentation
И каждый Class объект имеет его название:
getName() documentation

+0

Вам нужно имя объекта, но не имя класса. – Andrew

+1

Да, извините, так что невозможно получить @AndrewTobilko – maskacovnik