【问题标题】:how can i get an object name when it is created in java? [duplicate]在java中创建对象时如何获取对象名称? [复制]
【发布时间】:2015-05-30 14:40:56
【问题描述】:

创建对象后如何获取该对象的名称??

例如,让我们考虑一个类 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

【问题讨论】:

  • 对象的“名称”是什么意思? name 属性?班级名称?您分配给它的变量的名称?
  • 这似乎是不可能的。
  • 对象没有名字。变量会,但对象不会。了解 book 变量引用的同一对象可以被大量其他变量引用。哪个变量代表它的名字?或者一个对象可以是数组或 ArrayList 的一部分,因此不是“命名”变量的一部分。同样,对象没有名称。
  • 作为副本关闭,因为这个和类似的问题已经被问过很多次了。我不确定我们是否还需要一个。

标签: java objectname


【解决方案1】:
  1. 如果您的意思是 name 属性,则不能按照您的代码编写。您需要将 name 设为公开,或为其提供公开的 getter

  2. 如果你的意思是班级的名字,那就是

    book.getClass().getName()
    
  3. 如果您指的是分配给它的变量的名称 (book),则不能,这不是运行时可用的信息(在调试构建和调试器内省之外)。

【讨论】:

  • 很好的答案,很好的解释为什么不可能得到(第 3 点)+1
  • 我的意思是第三个选项,所以不可能。
【解决方案2】:

您必须在 Book 类中创建 getter 方法。会像:

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

然后你会调用:

book.getName();

【讨论】:

    【解决方案3】:

    用途:

    book.getClass().getName();
    

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

    【讨论】:

    • 你需要对象名,不要类名。
    • 是的,对不起,所以不可能得到@AndrewTobilko
    猜你喜欢
    • 2012-02-16
    • 2011-02-23
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2018-06-08
    • 2013-06-08
    相关资源
    最近更新 更多