Java 中的不明确 class 名称
Ambiguous class name in Java
目前我正在使用 API,它有 两个 class 同名 在不同的包中。当我想在一个 class 中同时使用两者时,我必须为其中一个分配绝对包路径,这在两种情况下都太长了。有没有其他方法可以在不使用长绝对路径的情况下同时使用两个 classes?例如,为 import 语句使用某种别名,所以我可以使用这样的东西:alias.className.
不纯粹Java,不。其他语言允许您这样做,但是使用 Java 唯一要做的就是导入一个并为另一个使用完全限定的名称。
不能导入两个同名的class并使用不合格,也没有Java.
中的这种别名机制
您需要通过完全限定名称引用其中一个 class 并且只导入另一个。
在您的情况下,导入 class 具有 更长的包名称 并使用其他完全限定名称 .
我刚刚又遇到了同样的问题并意识到,通过将 class 包装到一个简单的包装器中可以很容易地解决这个问题,它就像一个别名。
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(); }
}
创建具体"alias"子class
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<>();
目前我正在使用 API,它有 两个 class 同名 在不同的包中。当我想在一个 class 中同时使用两者时,我必须为其中一个分配绝对包路径,这在两种情况下都太长了。有没有其他方法可以在不使用长绝对路径的情况下同时使用两个 classes?例如,为 import 语句使用某种别名,所以我可以使用这样的东西:alias.className.
不纯粹Java,不。其他语言允许您这样做,但是使用 Java 唯一要做的就是导入一个并为另一个使用完全限定的名称。
不能导入两个同名的class并使用不合格,也没有Java.
中的这种别名机制您需要通过完全限定名称引用其中一个 class 并且只导入另一个。
在您的情况下,导入 class 具有 更长的包名称 并使用其他完全限定名称 .
我刚刚又遇到了同样的问题并意识到,通过将 class 包装到一个简单的包装器中可以很容易地解决这个问题,它就像一个别名。
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(); }
}
创建具体"alias"子class
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<>();