簡體   English   中英

Java:如何在從不同類實例化的不同對象中調用具有相同名稱的方法?

[英]Java : how to call methods with the same name in different objects instantiated from different classes?

我認為我的問題不是很清楚:)這是我的問題(詳細信息):

我有幾個對象(比如說objA,objB,objC等),它們是來自不同類的實例(分別說是ClassA,ClassB,ClassC ...)。

這些對象A,B,C ...調用相同的對象(我們將其稱為jsonConnector,是JsonConnector類的實例),然后我希望此jsonConnector調用其創建對象的updateUI()方法。

我的ClassX(ClassA,ClassB等)類中的代碼:

JsonConnector jsonConnector = new JsonConnector(this);

我的JsonConnector類的構造函數:

private Object callingObject;

public JsonConnector(Object aCallingObject) {

 callingObject = aCallingObject
}

我想在JsonConnector類中的某個位置執行以下操作:

aCallingObject.updateUI();

但出現編譯錯誤“對於類型Object,未定義方法updateUI()”

我可以做 :

String callingClassName = callingObject.getClass().getSimpleName();

if(callingClassName == "ClassA")
{
((ClassA)aCallingObject).updateUI();
}
else if(callingClassName == "ClassB")
{
((ClassB)aCallingObject).updateUI();
}
else if...

但是我不想寫100個'else if'語句!

有人知道我該怎么辦嗎?

謝謝 !!!

我認為您可以對接口進行編程。

public interface GuiUpdate
{
   void UpdateUI() ;
}
//do the same for classes that updates a gui. 
public class ClassA implements GuiUpdate 

您可以控制JsonConnector嗎? 如果是這樣,請注入對象引用:

public JsonConnector(GuiUpdate updater)

作為補充,這意味着您可以簡單地在后續方法(最好是多態和抽象)中執行以下操作:

  updater.UpdateUI() ;

您可以創建一個interface ,其中包含updateUI方法。

確保所有這些對象都implementinterface

然后使用MyInterface而不是Object將它們傳遞給JsonConnector

private CalleeInterface callingObject;

public JsonConnector(CalleeInterface aCallingObject) {

  callingObject = aCallingObject
}

您可以使用反射。 但是,如果您有其他解決方案,請不要使用它。

callingObject.getClass().getMethod("updateUI").invoke(callingObject);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM