132 votes

Importation de deux classes avec le même nom. Comment le manipuler ?

Disons que j'ai un code comme :

import java.util.Date;
import my.own.Date;

class Test{

  public static void main(String [] args){

    // I want to choose my.own.Date here. How?
    ..
    // I want to choose util.Date here. How ?

  }
}

Devrais-je être un nom de classe complet ? Puis-je me débarrasser des relevés d'importation ? Un tel scénario est-il courant dans la programmation du monde réel ?

183voto

Ellie P. Points 1616

Vous pouvez omettre les instructions d'importation et vous y référer en utilisant le chemin entier. Par exemple :

java.util.Date javaDate = new java.util.Date()
my.own.Date myDate = new my.own.Date();

Mais je dirais que l'utilisation de deux classes avec le même nom et une fonction similaire n'est généralement pas la meilleure idée à moins que vous ne puissiez vraiment préciser laquelle est celle.

23voto

Chii Points 7798

utilisez le nom complet au lieu d'importer la classe.

Ex. :

//import java.util.Date; //delete this
//import my.own.Date;

class Test{

   public static void main(String [] args){

      // I want to choose my.own.Date here. How?
      my.own.Date myDate = new my.own.Date();

      // I want to choose util.Date here. How ?
      java.util.Date javaDate = new java.util.Date();
   }
}

10voto

darren Points 8541

Oui, lorsque vous importez des classes avec les mêmes noms simples, vous devez vous y référer par leurs noms de classe entièrement qualifiés. Je laisserais les déclarations d'importation dans, car cela donne aux autres développeurs une idée de ce qui est dans le fichier quand ils travaillent avec elle.

java.util.Data date1 = new java.util.Date();
my.own.Date date2 = new my.own.Date();

7voto

Cheruvim Points 61

Une autre façon de le faire est de le sous-classer :

package my.own;

public class FQNDate extends Date {

}

Et puis importez my.own.FQNDate dans des paquets qui ont java.util.Date.

6voto

Peter Lawrey Points 229686

Si vous avez votre propre classe de date, vous devez la distinguer de la classe de date intégrée, c'est-à-dire pourquoi avez-vous créé la vôtre. Quelque chose comme ImmuteDate ou BetterDate ou NanoDate, même MyDate indiquerait pourquoi vous avez votre propre classe de date. Dans ce cas, ils auront un nom unique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X