2015-05-30 65 views
1

當一個對象被創建時我如何獲得該對象的名稱?如何在java中創建對象名稱?

例如,讓我們考慮一個類圖書:

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

對象沒有名稱。變量可以,但對象不會。瞭解由book變量引用的同一對象可以被大量其他變量引用。哪個變量代表它的名字?或者一個對象可以是數組或ArrayList的一部分,因此不是「已命名」變量的一部分。再次,對象沒有名字。 –

回答

4
  1. 如果你指的是name財產,你不能用你的代碼所寫。你需要要麼使name公共,或提供一個公共的getter它

  2. 如果你指的是類的名稱,這將是

    book.getClass().getName() 
    
  3. 如果你指的是變量的名稱你已經將它分配到(book),你不能,那不是在運行時可用的信息(除了調試構建和調試器內省)。

+0

好的答案,很好的解釋爲什麼它不可能得到(點3)+1 – maskacovnik

+0

我的意思是第三種選擇,所以這是不可能的。 – rainman

0

您必須在Book類中創建getter方法。會是這樣的:

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

然後您可以撥打:

book.getName();