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

标签 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() undefined object 类型”

我能做到:

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

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

但我不想写 100 个“else if”语句!

有人知道我该怎么做吗?

谢谢!!!

最佳答案

我认为您可以针对接口(interface)进行编程。

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

您可以控制 JsonConnector 吗?如果是这样,注入(inject)对象引用:

public JsonConnector(GuiUpdate updater)

补充一点,这意味着您可以在后续方法中简单地执行以下操作,最好的多态性和抽象:

  updater.UpdateUI() ;

关于Java : how to call methods with the same name in different objects instantiated from different classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16319077/

相关文章:

java - 如何在 ARCore 中叠加二维图像?

Java 相当于 C 的 poll()?

android - 同步Android和PC的系统时钟

以不同格式显示代码的 Android Studio 编辑器

Python多重继承,如果两个基类都持有相同的方法,则调用第二个基类方法

c++ - 在 C++ 中使用 <initializer_list>

java - 如何在应用程序引擎数据存储区中应用依赖字段过滤器?

java - Java中的Unidata查询

java - 如何使用 Java 等检测数据库事件

python - 如何从父类(super class)的实例创建子类的实例?