如何在java中创建对象名称?

问题描述:

当一个对象被创建时我如何获得该对象的名称?如何在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的一部分,因此不是“已命名”变量的一部分。再次,对象没有名字。 –

  1. 如果你指的是name财产,你不能用你的代码所写。你需要要么使name公共,或提供一个公共的getter它

  2. 如果你指的是类的名称,这将是

    book.getClass().getName() 
    
  3. 如果你指的是变量的名称你已经将它分配到(book),你不能,那不是在运行时可用的信息(除了调试构建和调试器内省)。

+0

好的答案,很好的解释为什么它不可能得到(点3)+1 – maskacovnik

+0

我的意思是第三种选择,所以这是不可能的。 – rainman

您必须在Book类中创建getter方法。会是这样的:

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

然后您可以拨打:

book.getName(); 

用途:

book.getClass().getName(); 

在Java中的每个对象都有getClass()方法:
getClass() documentation
而每Class对象有它的名字:
getName() documentation

+0

你需要对象名称,不要使用类名。 – Andrew

+1

是的,对不起,所以它是不可能得到@AndrewTobilko – maskacovnik