Web サービスにアクセスする Java ライブラリを作成していますが、ライブラリはさまざまなプラットフォームで呼び出されるため、ksoap2 と ksoap2-android を使用してさまざまなプラットフォーム用のヘルパー クラスを生成しています。問題は、生成されたクラス/メソッドの 2 つのセットがあり、それらのシグネチャは同等ですが、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 を実装」を追加することなく、これを行う方法があることを願っています。