我的应用程序中有两个名称相同的类,我无法重命名它们,其中一个来自 packageA,第二个来自 packageB,这个类的名称是 State,我必须在我的程序中的一个地方使用它,如下所示:
Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>>
有什么办法(但使用这个类)使它更具可读性(稍微缩短它)?
我的应用程序中有两个名称相同的类,我无法重命名它们,其中一个来自 packageA,第二个来自 packageB,这个类的名称是 State,我必须在我的程序中的一个地方使用它,如下所示:
Map<Integer,Set<org.omg.PortableServer.POAManagerPackage.State>>
有什么办法(但使用这个类)使它更具可读性(稍微缩短它)?
可能从其中一个类派生以消除歧义。例如,在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 文件)中使用两个不同的类,那么答案是“否”,Java 不提供简写符号。您必须明确并包含完整的包名称以消除歧义。
@dantuch 提出了一个有趣的想法,但不是包装这个类,如果你可以扩展其中一个,你可以创建一个空的子类,State
它只是将它的所有实现推迟到父类。
public MyState extends State {
// no implementation required
}
然后你可以参考 MyState