3

アプリに同じ名前の 2 つのクラスがあります。名前を変更することはできません。そのうちの 1 つは packageA からの 2 番目の packageB です。このクラスの名前は State で、次のようにプログラム内の 1 か所で使用する必要があります。

 Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>>  

これをやや読みやすくする(やや短くする)方法はありますか(ただし、このクラスを使用します)?

4

3 に答える 3

4

曖昧さをなくすために、クラスの 1 つから派生する可能性があります。たとえば、POAState.java次のようになります。

import org.omg.PortableServer.POAManagerPackage.State;

public class POAState extends State {}

それから:

Map<Integer,Set<POAState>> my_map;
于 2012-07-01T10:14:44.863 に答える
0

Set<org.omg.PortableServer.POAManagerPackage.State>必要なメソッドだけを持つラッピング クラスを作成しますSet

クライアントでの使用法:

Map<Integer,GoodWrappingSetName> 
于 2012-07-01T10:11:26.210 に答える
0

State同じコード (*.java ファイル) で2 つの異なるクラスを使用する場合、答えは「いいえ」です。Java は短縮表記を提供しません。あいまいさを取り除くために、明示的に完全なパッケージ名を含める必要があります。

@dantuch は興味深いアイデアを提起しましたが、クラスをラップするのではなく、そのうちの 1 つを拡張できる場合は、Stateすべての実装を親クラスに任せるだけの空のサブクラスを作成できます。

public MyState extends State {
    // no implementation required
}

次に、MyState を参照できます

于 2012-07-01T10:15:35.440 に答える