アプリに同じ名前の 2 つのクラスがあります。名前を変更することはできません。そのうちの 1 つは packageA からの 2 番目の packageB です。このクラスの名前は State で、次のようにプログラム内の 1 か所で使用する必要があります。
Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>>
これをやや読みやすくする(やや短くする)方法はありますか(ただし、このクラスを使用します)?
アプリに同じ名前の 2 つのクラスがあります。名前を変更することはできません。そのうちの 1 つは packageA からの 2 番目の packageB です。このクラスの名前は State で、次のようにプログラム内の 1 か所で使用する必要があります。
Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>>
これをやや読みやすくする(やや短くする)方法はありますか(ただし、このクラスを使用します)?
曖昧さをなくすために、クラスの 1 つから派生する可能性があります。たとえば、POAState.java
次のようになります。
import org.omg.PortableServer.POAManagerPackage.State;
public class POAState extends State {}
それから:
Map<Integer,Set<POAState>> my_map;
Set<org.omg.PortableServer.POAManagerPackage.State>
必要なメソッドだけを持つラッピング クラスを作成しますSet
。
クライアントでの使用法:
Map<Integer,GoodWrappingSetName>
State
同じコード (*.java ファイル) で2 つの異なるクラスを使用する場合、答えは「いいえ」です。Java は短縮表記を提供しません。あいまいさを取り除くために、明示的に完全なパッケージ名を含める必要があります。
@dantuch は興味深いアイデアを提起しましたが、クラスをラップするのではなく、そのうちの 1 つを拡張できる場合は、State
すべての実装を親クラスに任せるだけの空のサブクラスを作成できます。
public MyState extends State {
// no implementation required
}
次に、MyState を参照できます