2

2つの異なるプラットフォーム(SDK)で同じクラスを使用する必要があります。

クラスとそのメソッドは同じですが、クラスにアクセスするためのパスは異なります。1つのデバイスで使用する必要があります:

a1.a2.classnameをインポートします

2番目のデバイスでは、次を使用する必要があります。

インポートb1.b2.b3.classname

理由を聞かないでください。SDKを作成しておらず、変更できません。

だから問題は、どうやってそれをするのかということです。同じクラスの異なるバージョンを異なるSDKバージョンにインポートする方法はありますか?

C ++では、次のようなプリコンパイラスイッチを使用します。

#ifdef SDK1
#include "path1/class.h"
#else
#include "path2/class.h"
#endif

これをJavaでどのように行いますか?

クラスのインターフェースにしかアクセスできず、メソッドの数が多すぎてプロキシの使用を検討できないため、クラスから派生できないことを考慮してください。

4

1 に答える 1

2

ライトプロキシレイヤーを作成し、で使用できるクラスを確認できますClass.forName()。これは、将来、2つのクラスが署名などで分岐する場合の方法です。

ただし、それらが常に同一の機能を保持することが完全に確実な場合は、ビルドツールで問題のインポートのすべてのインスタンスを検索して置換するだけです。Mavenでは、リソースフィルタリングを使用できますが、この質問には例があります。

于 2011-11-18T13:52:56.553 に答える