Java中的不明确的类名

时间:2015-02-04 17:11:07

标签: java packages

目前,我正在使用API​​,该API在不同的包中具有两个具有相同名称的类。当我想在一个类中使用两者时,我必须为其中一个分配绝对包路径,这两种情况都太长了。有没有其他方法如何使用这两个类而不使用长绝对路径?例如,对import语句使用某种别名,所以我可以使用这样的东西: alias.className

3 个答案:

答案 0 :(得分:4)

不是纯Java,不是。其他语言允许您这样做,但使用Java时,唯一要做的就是导入一个并使用另一个完全限定的名称。

答案 1 :(得分:1)

我刚刚再次遇到同样的问题并意识到,通过将类包装到一个简单的包装器中可以很容易地解决这个问题,这个包装器就像一个别名。

public class AbstractAlias<T> {
    private final T o;
    public AbstractAlias(T o) { this.o = o; }
    public T get() { return o; }
    @Override public boolean equals(Object obj) { return o.equals(obj); }
    @Override public int hashCode() { return o.hashCode(); }
}

创建具体&#34;别名&#34;子类

public class MyAlias extends AbstractAlias<long.class.path.ClassName> {
    public MyAlias(long.class.path.ClassName o) { super(o); }
}

在通用结构中使用MyAlias,例如Map

Map<String,MyAlias> map = new HashMap<>();

答案 2 :(得分:0)

您无法导入两个具有相同名称的类,并使用它们 unqualified ,并且Java中没有这样的别名机制。

您需要通过其完全限定名称引用其中一个类,并仅导入另​​一个类。

在您的案例中,导入类具有更长的包名称,并使用具有完全限定名称的其他类。