![](/img/trans.png)
[英]Call different methods from different classes in a single reference in 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
方法。
確保所有這些對象都implement
該interface
。
然后使用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.