目前,我正在使用API,该API在不同的包中具有两个具有相同名称的类。当我想在一个类中使用两者时,我必须为其中一个分配绝对包路径,这两种情况都太长了。有没有其他方法如何使用这两个类而不使用长绝对路径?例如,对import语句使用某种别名,所以我可以使用这样的东西: alias.className 。
答案 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中没有这样的别名机制。
您需要通过其完全限定名称引用其中一个类,并仅导入另一个类。
在您的案例中,导入类具有更长的包名称,并使用具有完全限定名称的其他类。