2014-09-19 70 views
0

在java中,如果該方法位於另一個類中,如何在調用的方法內獲得調用該方法的對象?我看遍了互聯網,沒有解決方案。有人可以幫忙嗎?獲取對象調用方法

+1

沒有必要調用方法的對象。如果你從'static'方法或'static'初始化方法調用該方法呢? – 2014-09-19 04:54:03

+3

你爲什麼需要這些信息? – 2014-09-19 04:56:53

+0

爲此創建單例類! – k0sh 2014-09-19 04:57:48

回答

1

我能想到的唯一的辦法是通過this的方法,

static void someMethod(Object o) { 
    System.out.println(o); 
} 
void testIt() { 
    someMethod(this); // <-- pass the current instance to the method. 
} 
+0

要訪問調用類的實例,他需要有一個已經由第二個類創建的實例來調用調用類的方法。沒有?如果是這樣,那將是一個不同的例子。我看到的唯一方法是調用類存儲自己的靜態引用,這很麻煩,但可以讓他調用靜態方法來獲取所需的實例。 – MarGar 2014-09-19 05:07:37

+0

+1雖然不是唯一的方法,但是最好的方法。 – nmore 2014-09-19 05:09:38

0
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace() 

該數組的最後一個元素會在你使用了最新的對象。但是應該更好地使用一個額外的參數,如上所述回答並通過this對象。

0

如果你事先知道你需要接收第一類的實例,那麼你可以準備第二類來接收它,如下所示。

public class class1 { 

public static void main(String[] args) 
{ 
    new class1(); 

} 

public class1() 
{ 
    send(); 
} 

private void send() 
{ 
    new class2().receiveClass(this);// creates an instance of class 2 and sends a reference of class1 (this) 
} 

public void print() 
{ 
    System.out.println("class1.print()"); 
} 
} 

要在第二堂課獲得。

public class class2 { 

private class1 c1; 

public void receiveClass(class1 c) 
{ 
    c1=c; 
    c1.print(); //accessing the print method of class1, the same instance that references this object. 
} 

} 

如果上面給出的解決方案不適用於您,這也可以工作。