3

我的应用程序中有两个名称相同的类,我无法重命名它们,其中一个来自 packageA,第二个来自 packageB,这个类的名称是 State,我必须在我的程序中的一个地方使用它,如下所示:

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

有什么办法(但使用这个类)使它更具可读性(稍微缩短它)?

4

3 回答 3

4

可能从其中一个类派生以消除歧义。例如,在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 文件)中使用两个不同的类,那么答案是“否”,Java 不提供简写符号。您必须明确并包含完整的包名称以消除歧义。

@dantuch 提出了一个有趣的想法,但不是包装这个类,如果你可以扩展其中一个,你可以创建一个空的子类,State它只是将它的所有实现推迟到父类。

public MyState extends State {
    // no implementation required
}

然后你可以参考 MyState

于 2012-07-01T10:15:35.440 回答