有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中包不明确的类名

目前我正在使用API,它在不同的包中有两个同名的类。当我想在一个类中同时使用这两种方法时,我必须为其中一种方法分配绝对包路径,这在两种情况下都太长。有没有其他方法可以在不使用长绝对路径的情况下使用这两个类?例如,在import语句中使用某种别名,因此我可以使用如下内容:别名。类名


共 (3) 个答案

  1. # 1 楼答案

    您不能导入同名的两个类并使用它们非限定的,Java中也没有这种别名机制

    您需要通过完全限定名引用其中一个类,并且只导入另一个类

    在您的情况下,导入具有较长包名的类,并使用其他具有完全限定名的类

  2. # 2 楼答案

    我刚刚又遇到了同样的问题,并且意识到,通过将类包装成一个简单的包装器,可以很容易地解决这个问题,这个包装器的作用类似于一个别名

    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(); }
    }
    

    创建具体的“别名”子类

    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<>();
    
  3. # 3 楼答案

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