Java:如何在不同类中实例化的不同对象中调用具有相同名称的方法?

时间:2013-05-01 13:31:48

标签: java android class instance instantiation

我认为我的问题不是很明确:)这是我的问题(更详细):

我有几个对象(比如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();

但是我有一个编译错误“对象类型的方法updateUI()是未定义的”

我能做到:

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

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

但我不想写'其他'如果'陈述!

有人知道我该怎么做吗?

谢谢!!!

3 个答案:

答案 0 :(得分:4)

我认为你可以编程到界面。

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() ;

答案 1 :(得分:1)

您可以创建interface,其中包含updateUI方法。

确保implement

的所有对象interface

然后使用JsonConnector代替MyInterface将其传递给Object

private CalleeInterface callingObject;

public JsonConnector(CalleeInterface aCallingObject) {

  callingObject = aCallingObject
}

答案 2 :(得分:1)

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

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