1
A
回答
3
最簡潔的方法是隻傳遞調用者本身或至少一些提示作爲構造函數或方法參數。
Other other = new Other(this);
// or
other.doSomething(this);
討厭的方法是根據堆棧跟蹤解密它。
public void doSomething() {
StackTraceElement caller = Thread.currentThread().getStackTrace()[2];
String callerClassName = caller.getClassName();
// ...
}
0
除了構造函數,你可以使用靜態初始化塊或初始化塊。
class A
{
private Object a;
{
// Arbitrary code executed each time an instance of A is created.
System.out.println("Hey, I'm a brand new object!");
System.out.println("I get called independently of any constructor call.");
}
static
{
// Arbitrary *static* code
System.out.println("Some static initialization code just got executed!");
}
public A()
{
// Plain-Jane constructor
System.out.println("You're probably familiar with me already!");
}
}
我想我誤解了你的問題,但我會留下我上面寫的。
根據您的要求,您也可以看看AspectJ。它可能提供一個乾淨的方式來實現你的目標。
3
對於一個班級來說,瞭解誰在呼喚它通常被認爲是一個壞主意。它使得設計非常脆弱。也許更好的一個是定義一個接口,任何類都可以符合這個接口作爲方法調用的一部分傳入。然後調用方法可以由類A執行。使它成爲一個接口意味着A沒有對調用它的類的具體知識。
另一種選擇是使用周圍A.一個裝飾然後裝飾可以實現方法調用和做的事情先和後進行轉發調用類A
關於外部API的思考,春天攔截可能是一個好的解決方案
這一切都歸結於你想要做的事情。但我會建議A類做這種事情是一個糟糕的設計理念。
相關問題
- 1. 外部類可以調用其內部類的方法嗎?
- 2. 調用時從一個類中的方法獲取信息到mainform?
- 3. 我可以從另一個類調用類(UIView的子類)內的方法嗎?
- 4. 從openGL類中調用外部方法
- 5. 我可以從另一個部分類中調用一個部分類中定義的函數嗎?可能嗎?
- 6. 在Java中從一個類的外部調用方法
- 7. PHP - 獲取類,其中調用方法
- 8. 從AST獲取方法調用信息
- 9. 我可以從類方法中獲得另一個對象嗎?
- 10. 從外部類的python調用方法
- 11. 一個類可以使用在其某個類別中聲明的方法嗎?
- 12. 我可以從實體的類方法中獲取EntityManager嗎?
- 13. 在Java中,可以合併兩個類,以便兩個類的方法都可以從一個類中調用?
- 14. 從外部類調用活動方法
- 15. 從類方法調用「外部」函數
- 16. 我們可以說方法局部類是一個內部類的類型嗎?
- 17. 外部類中的調用方法
- 18. GoogleMock可以從同一類的其他方法調用中調用模擬方法嗎?
- 19. 我可以使用str2func調用一個類方法嗎?
- 20. 如何從外部類中調用其他子類的子類
- 21. 我們可以在方法內部有一個內部類嗎?
- 22. 我可以指定從哪個類調用虛擬方法嗎?
- 23. Python:當從另一個類中調用初始方法時調用其他類方法的類方法
- 24. 從內部Action類調用外部類'方法getContentPane()
- 25. 超類可以從其子類繼承方法嗎?
- 26. 如何在JavaScript中從外部類調用「類方法」?
- 27. GWT:可以從外部JavaScript代替JSNI調用Java方法嗎?
- 28. 我可以從其他類方法執行ActionListener方法actionPerformed嗎?
- 29. 從另一個類調用類方法
- 30. 從另一個類調用類方法..
在第二種方法中,唯一捕獲的信息是類名......沒有多大用處。 – adrianboimvaser 2011-01-21 02:30:21