2015-04-27 47 views
0

我想知道我們是否可以在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(); 
    } 
} 

我的期望的結果將是:

Name: p 
Name: q 

是它無論如何得到這個?

+0

這是沒有意義的。一個對象可以被分配到一個,很多或者沒有變量,比如當它是一個集合的一部分時。每種情況下名稱是什麼?例如'A p = new A();'然後'A q = p;'。對象的名稱是什麼? P + Q&答:變量名並不意味着你認爲它們的意思。 –

+0

怎麼樣從一個匿名內部類的對象,如'button.addActionListener(new ActionListener(){...});'什麼是ActionListener的名字?再次,這個概念沒有真正的意義。 –

+0

我知道這根本沒有意義。然而,我正在做的項目有一些特殊的限制。因此,我可以保證我想要獲取的對象肯定會被分配一次並且具有明確的名稱。所以我只想問問是否有辦法處理這種情況。 –

回答

4

這在Java中是不可能的,甚至不能通過反射來獲得。您最好的選擇是您有一個String字段,您將在其中存儲變量的名稱,並在創建對象引用時填寫此字段。

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"); 
+0

這就是我所害怕的。無論如何,我想我會採用這種解決方案。謝謝! –

相關問題