在Python中,您可以执行以下操作:
from a import b as c
您将如何在Java中执行此操作,因为我有两个冲突的导入。
#1楼
Java中没有导入别名机制。 您不能导入两个具有相同名称的类,并且不能同时使用它们。
导入一个类,并为另一个类使用完全限定名称,即
import com.text.Formatter;
private Formatter textFormatter;
private com.json.Formatter jsonFormatter;
#2楼
Java不允许您这样做。 您需要通过其全限定名来引用其中一个类,而仅导入另一个。
#3楼
值得注意的是Groovy具有此功能 :
import java.util.Calendar
import com.example.Calendar as MyCalendar
MyCalendar myCalendar = new MyCalendar()
#4楼
正如其他答案所述,Java不提供此功能。
已多次要求实现此功能,例如,作为JDK-4194542:类名别名或JDK-4214789:扩展导入以允许重命名导入的类型 。
从评论:
这不是一个不合理的请求,尽管不是很必要。 偶尔使用全限定名称并不是一个不适当的负担(除非库确实左右重复使用相同的简单名称,这是不好的样式)。
无论如何,它不会超过语言更改的性价比。
所以我想我们很快将不会在Java中看到此功能:-P
#5楼
实际上,可以创建一个快捷方式,以便通过执行以下操作在代码中使用较短的名称:
package com.mycompany.installer;
public abstract class ConfigurationReader {
private static class Implementation extends com.mycompany.installer.implementation.ConfigurationReader {}
public abstract String getLoaderVirtualClassPath();
public static QueryServiceConfigurationReader getInstance() {
return new Implementation();
}
}
这样,您只需指定一次长名称,就可以拥有多个想要的特殊命名的类。
我喜欢这种模式的另一件事是,您可以将实现类命名为与抽象基类相同的名称,并将其放置在不同的命名空间中。 不过,这与导入/重命名模式无关。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3189544