在Python中你可以做一个:
from a import b as c
Run Code Online (Sandbox Code Playgroud)
您将如何在Java中执行此操作,因为我有两个冲突的导入.
Boz*_*zho 431
Java中没有导入别名机制.您不能导入两个具有相同名称的类,并且使用两个不合格的类.
导入一个类并使用另一个类的完全限定名称,即
import com.text.Formatter;
private Formatter textFormatter;
private com.json.Formatter jsonFormatter;
Run Code Online (Sandbox Code Playgroud)
sfu*_*ger 57
值得注意的是,Groovy具有以下功能:
import java.util.Calendar
import com.example.Calendar as MyCalendar
MyCalendar myCalendar = new MyCalendar()
Run Code Online (Sandbox Code Playgroud)
sie*_*egi 54
正如其他答案已经说明的那样,Java不提供此功能.
已多次请求实现此功能,例如JDK-4194542:类名称别名或JDK-4214789:扩展导入以允许重命名导入的类型.
来自评论:
这不是一个不合理的要求,尽管不是必需的.偶尔使用完全限定名称并不是一个不适当的负担(除非库真的重复使用左右相同的简单名称,这是不好的风格).
无论如何,它不会通过语言变化的价格/性能标准.
所以我想我们很快就不会在Java中看到这个功能:-P
Chr*_*ski 14
今天我向 OpenJDK 提交了一份关于这个别名特性的 JEP 草案。我希望他们会重新考虑。
如果您有兴趣,可以在这里找到 JEP 草案:https : //gist.github.com/cardil/b29a81efd64a09585076fe00e3d34de7
kan*_*ane 14
可笑的是java还没有这个。斯卡拉有它
import com.text.Formatter
import com.json.{Formatter => JsonFormatter}
val Formatter textFormatter;
val JsonFormatter jsonFormatter;
Run Code Online (Sandbox Code Playgroud)
除非非默认构造函数出现问题,否则您始终可以这样做(同时我们都在等待 Java 语言规范赶上):
public class YaddaYadda
{
private static class ZU extends eu.zrbj.util.ZrbjUtil_3_0 { }
public void foo (String s)
{
if (ZU.isNullOrEmpty(s))
{
// ...
Run Code Online (Sandbox Code Playgroud)
对于项目范围内的使用,“导入”类可以进入单独的类文件,为导入提供单点定义。
这是一个救星,特别是对于“库”类,即静态实用函数的集合。一方面,它使您能够对这些野兽进行版本控制(如示例所示),而不会给用户带来重大不便。