2010-09-16 4 views
6

Je veux importer ces deux classes, toutes deux nommées Query - une classe JDO, l'autre une classe JPA, pour utiliser dans différentes méthodes de la même classe.Comment importer deux classes avec le même nom dans différents paquets?

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

Est-il possible à l'échelle mondiale l'importation tous les deux en même temps en haut du fichier?

Répondre

15

J'ai peur, non. Mais vous ne devez importer la classe à utiliser: il suffit de faire référence à l'une des classes par son nom complet, comme

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

Ensuite, vous pouvez importer un autre sans collisions de noms.

BTW, parfois si vous commencez à avoir beaucoup de telles collisions de ce nom dans votre classe, c'est un indice subtil pour refactoring: la division des fonctionnalités d'une grande classe entre plusieurs petits.

2

Le seul but d'une instruction import est d'établir un alias abrégé pour un nom complet. Si vous étiez autorisé à importer les deux, vous créeriez une ambiguïté qui nécessiterait la résolution de l'inférence de type et rendrait votre code extrêmement difficile à lire.

+2

@Ment - bien, le langage Java ne le permet pas, et il ne supporte pas non plus l'équivalent de 'typedef'. –

+0

Bien sûr, ce serait cool, mais ça ne marche pas comme ça (encore). – erickson

Questions connexes