6

同じ名前の2つのクラス間で翻訳するために取り組んでいるヘルパークラスで問題が発生しています。どちらのクラスも私の管理範囲外なので、単に名前を変更することはできません。

私の基本的なオプションはすべて、少なくとも1つのタイプの名前空間を完全に宣言することを含みます。

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

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

または逆のアプローチ:

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

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

または、より明示的なパターンの場合は、両方の名前空間を宣言します。

public class MyObjectConvertor {

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

これらのメソッドシグネチャを整理する可能性のある別のソリューションはありますか?ある種のC++「typedef」スタイルのソリューションが可能かどうか疑問に思っていますか?

4

1 に答える 1

8

シグニチャを整理する方法はありません。少なくとも1つのクラスは、完全修飾されたクラス名によって参照される必要があります。

そして、あなたの特別な場合には、これらのクラスをインポートせず、ソースコードでバージョン3を使用して、異なるパッケージで定義されている同じ名前の変換クラスであることを全員が十分に認識できるようにします。

于 2011-07-04T11:59:17.090 に答える