更改Java中的导入名称,或导入两个具备相同名称的类

在Python中,您能够执行如下操做: java

from a import b as c

您将如何在Java中执行此操做,由于我有两个冲突的导入。 json


#1楼

Java中没有导入别名机制。 您不能导入两个具备相同名称的类,而且不能同时使用它们。 spa

导入一个类,并为另外一个类使用彻底限定名称,即 code

import com.text.Formatter;

private Formatter textFormatter;
private com.json.Formatter jsonFormatter;

#2楼

Java不容许您这样作。 您须要经过其全限定名来引用其中一个类,而仅导入另外一个。 orm


#3楼

值得注意的是Groovy具备此功能get

import java.util.Calendar
import com.example.Calendar as MyCalendar

MyCalendar myCalendar = new MyCalendar()

#4楼

正如其余答案所述,Java不提供此功能。 io

已屡次要求实现此功能,例如,做为JDK-4194542:类名别名JDK-4214789:扩展导入以容许重命名导入的类型class

从评论: import

这不是一个不合理的请求,尽管不是很必要。 偶尔使用全限定名称并非一个不适当的负担(除非库确实左右重复使用相同的简单名称,这是很差的样式)。 扩展

不管如何,它不会超过语言更改的性价比。

因此我想咱们很快将不会在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();
    }
}

这样,您只需指定一次长名称,就能够拥有多个想要的特殊命名的类。

我喜欢这种模式的另外一件事是,您能够将实现类命名为与抽象基类相同的名称,并将其放置在不一样的命名空间中。 不过,这与导入/重命名模式无关。

相关文章
相关标签/搜索