如何获取Java中的实例名称?

如何获取Java中的实例名称?,java,Java,我想知道我们是否可以在Java中获得实例名的名称。例如: class A { public void run() { System.out.println("Name: " + ????); } } public class Main { public static void main(String[] _args) { A p = new A(); A q = new A(); p.run(); q.run(); } } 我的预期结

我想知道我们是否可以在Java中获得实例名的名称。例如:

class A {
  public void run() {
    System.out.println("Name: " + ????);
  }
}

public class Main
{
  public static void main(String[] _args) {
    A p = new A();
    A q = new A();

    p.run();
    q.run();
  }
}
我的预期结果是:

Name: p
Name: q

这在Java中是不可能的,甚至通过反射都不可用。最好的选择是有一个
字符串
字段,在该字段中存储变量的名称,并在创建对象引用时填充该字段

class A {
    private final String name;
    public A(String name) {
        this.name = name;
    }
    public void run() {
        System.out.println("Name: " + this.name);
    }
}
//...
A p = new A("p");
A q = new A("q");

这毫无意义。对象可以指定给一个、多个或不指定变量,例如当它是集合的一部分时。在每种情况下,它的名称是什么?例如
A p=newa()然后
aq=p。对象的名称是什么?PQ回答:变量名并不是你认为它们的意思。来自匿名内部类的对象呢,比如
button.addActionListener(newActionListener(){…})ActionListener的名称是什么?再说一次,这个概念没有真正的意义。我知道它毫无意义。然而,我正在做的项目有一些特殊的限制。因此,我可以保证我要获取的对象肯定会被分配一次,并且具有显式名称。所以我只想问一下,是否有一些方法来处理这种情况。在这种情况下,你应该公布你的限制的细节,因为没有这些,你的问题闻起来很可能是伪装的。这就是我担心的。无论如何,我想我会采用这个解决方案。谢谢