我认为我的问题不是很明确:)这是我的问题(更详细):
我有几个对象(比如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...
但我不想写'其他'如果'陈述!
有人知道我该怎么做吗?
谢谢!!!
答案 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);