Как импортировать два класса с одинаковыми именами в разные пакеты? - PullRequest
7 голосов
/ 17 сентября 2010

Я хочу импортировать эти два класса, оба с именем Query - один класс JDO , другой класс JPA , для использования в различных методах в одном и том же классе.

import javax.jdo.Query;
import javax.persistence.Query;

Есть ли способ импортировать оба файла одновременно в верхней части файла?

Ответы [ 3 ]

16 голосов
/ 17 сентября 2010

Боюсь, нет.Но вам не нужно импортировать класс, чтобы использовать его: просто укажите один из классов по его полному имени, например

javax.jdo.Query query = getJDOQuery();
query.doSomething();

Затем вы можете импортировать другой без коллизий имен.

КстатиИногда, если вы начинаете получать множество таких имен, таких коллизий в вашем классе, это тонкий совет для рефакторинга: разделение функциональности одного большого класса между несколькими маленькими.

2 голосов
/ 03 мая 2018

Существующие ответы верны.Я хотел бы показать вам, как конфликты имен классов могут обрабатываться в Kotlin ( документы ).

Если есть конфликт имен, мы можем устранить неоднозначность, используя ключевое слово as для локальногопереименуйте конфликтующую сущность:

import javax.jdo.Query // Query is accessible
import javax.persistence.Query as jpaQuery // jpaQuery stands for 'javax.persistence.Query'

Это +1 причина, по которой вы должны рассмотреть Kotlin для вашего следующего проекта.

2 голосов
/ 17 сентября 2010

Единственная цель оператора import - создать сокращенный псевдоним для полного имени. Если бы вам было разрешено импортировать и то и другое, вы бы создали двусмысленность, для решения которой потребовался бы вывод типа, и сделать ваш код чрезвычайно трудным для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...