我正在创建一个将访问 Web 服务的 java 库,但该库将在不同的平台上调用,因此我们使用 ksoap2 和 ksoap2-android 为不同的平台生成帮助程序类。问题是我们有两组生成的类/方法,它们的签名是等效的,但它们并没有公开共享一个 Java 接口——所以我想不出一种从我的主代码中调用它们的方法。
一个简化的例子:
//generated for Android
class A {
public String sayHi() {
return "Hi A";
}
}
//generated for j2se
class B {
public String sayHi() {
return "Hi B";
}
}
//main code - don't know how to do this
XXX talker = TalkerFactory.getInstance()
String greeting = talker.sayHi()
当然,最后一部分是伪代码。具体来说,我如何在编译时不知道其类型且不符合特定接口的对象实例上调用 sayHi() ?我希望有一些方法可以做到这一点,而无需手动编辑所有生成的类来添加“实现 iTalker”。