2017-07-12 1 views
0

S'il existe une hiérarchie de packages (c'est-à-dire pckg1.pckg2.pckg3) et que chacun d'entre eux a la même classe (par exemple Abc), comment puis-je importer la classe Abc de pckg1?Importer une classe à partir d'une hiérarchie de packages

L'instruction import pckg1.pckg2.pckg3.Abc est ambiguë lorsque Abc est présente dans les trois boîtiers.

+2

si vous souhaitez importer 'pckg1', allez' pckg1.Abc d'importation; ' –

+0

vous spécifiez le package. Pourquoi serait-ce ambigu? BTW, il n'y a pas de relation hiérarchique entre les paquets. – shmosel

+0

Juste au cas où la portée de votre question serait mal comprise ... demandez-vous d'importer la classe pkcg1.pckg2.pckg3.Abc en même temps que vous importez pkcg1.Abc dans une seule classe? Ou demandez-vous juste l'importation de pkcg1.pckg2.pckg3.Abc? (Je crois que le second est à la fois ce que vous vouliez dire et ce que la plupart des réponses supposent actuellement.) – Jeutnarg

Répondre

0
import pckg1.Abc; 

Regardez les paquets comme dossiers de fenêtres.

1

import pckg1.pckg2.pckg3.Abc n'est pas ambigu. Il se réfère à la classe spécifique. Dans ce cas Abc du paquet pckg1.pckg2.pckg3.

En java, il n'y a pas de hiérarchie de paquetages. On dirait que pckg1.pckg2 et pckg1.pckg2.pckg3 sont liés, mais en fait il n'y a aucune relation entre eux (sauf la structure de fichier où .class fichiers sont stockés, mais il ne fait pas partie du langage).

3

Il n'existe pas de hiérarchie de paquetage.

pckg1.pckg2 ne connaît rien et n'hérite rien de pckg1. En effet, pckg1.pckg2 peut exister sans qu'il y ait même un pckg1. C'est simplement une convention de nommage pour aider à commander les choses de façon logique.

pckg1.pckg2.pckg3.Abc n'est donc pas ambigu. Il viendra du paquet que vous considérez actuellement comme le plus bas dans la hiérarchie, pckg3. Ceci dit, il n'existe pas de pckg3. Il y a pckg1, pckg1.pckg2 et pckg1.pckg2.pckg3 mais ils pourraient aussi bien s'appeler cat, banana et magic.

0

Comme mentionné vous le feriez:

import pckg1.Abc; 

Mais je ferais aussi le chemin de package complet lors de la définition des variables pour éviter toute ambiguïté. Par exemple:

pckg1.Abc abc = new pckg1.Abc();