Измените имя импорта в Java или импортируйте два класса с одинаковым именем
в Python, вы можете сделать:
from a import b as c
Как бы вы это сделали на Java, так как у меня есть два импорта, которые сталкиваются.
5 ответов
в Java нет механизма сглаживания импорта. Нельзя импортировать два класса с одинаковым именем и использовать оба класса неквалифицированными.
импортируйте один класс и используйте полное имя для другого, т. е.
import com.text.Formatter;
private Formatter textFormatter;
private com.json.Formatter jsonFormatter;
вероятно, стоит отметить, что Groovy имеет эту функцию:
import java.util.Calendar
import com.example.Calendar as MyCalendar
MyCalendar myCalendar = new MyCalendar()
Как уже говорилось в других ответах, Java не предоставляет эту функцию.
реализация этой функции была запрошена несколько раз, например, как JDK-4194542: псевдоним имени класса или JDK-4214789: расширить импорт, чтобы разрешить переименование импортированного типа.
из комментариев:
это разумная просьба, хотя вряд ли существенно. Время от времени использование полных имен не является излишним бремя (если только библиотека действительно повторно использует те же простые имена справа и слева, что является плохим стилем).
в любом случае, он не проходит бар цены / производительности для языка изменение.
поэтому, я думаю, мы не увидим эту функцию в Java в ближайшее время : - P
Java не позволяет вам это делать. Вам нужно будет ссылаться на один из классов по его полному имени и импортировать только другой.
на самом деле можно создать ярлык, так что вы можете использовать более короткие имена в коде, делая что-то вроде этого:
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();
}
}
таким образом, вам нужно указать длинное имя только один раз, и вы можете иметь столько специально именованных классов, сколько хотите.
еще одна вещь, которая мне нравится в этом шаблоне, - это то, что вы можете назвать класс реализации таким же, как абстрактный базовый класс, и просто поместить его в другое пространство имен. Это не связано с однако шаблон импорта / переименования.