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

這樣,您只需指定一次長名稱,就能夠擁有多個想要的特殊命名的類。

我喜歡這種模式的另外一件事是,您能夠將實現類命名爲與抽象基類相同的名稱,並將其放置在不一樣的命名空間中。 不過,這與導入/重命名模式無關。

相關文章
相關標籤/搜索