2011-07-04 10 views
6

ヘルパークラスの問題を抱えています。私は、同じ名前の2つのクラス間を翻訳するために取り組んでいます。どちらのクラスも自分のコントロールの範囲外なので、単純に名前を変更することはできません。より明確にするために、名前空間間のクラスネーミングの衝突に対処するための最善のアプローチ

import com.myco.first.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject transform(MyObject o) {} 
} 

または両方の名前空間を宣言:

import com.myco.second.long.package.namespace.MyObject; 
public class MyObjectConvertor { 

    MyObject transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

またはその逆のアプローチ:

私の基本的なオプションはすべてのタイプの少なくとも一つのための完全な名前空間を宣言して関与しますパターン:

public class MyObjectConvertor { 

    com.myco.second.long.package.namespace.MyObject 
     transform(com.myco.first.long.package.namespace.MyObject o) {} 
} 

これらのメイクアップを整える可能性のある別の解決方法はありますかodの署名? C + +の "typedef"スタイルのソリューションが可能かもしれないのだろうか?

答えて

8

を整頓することはできません。シグネチャは、少なくとも1つのクラスを完全修飾クラス名で参照する必要があります。

あなたの特別なケースでは、これらのクラスをインポートしないでください。ソースコードにバージョン3を使用してみてください。だから誰もが完全に認識しているので、と同じ名前の変換クラスは異なるパッケージで定義されています。

関連する問題