66 votes

Comment créer un alias de type variable en Java

disons que j'ai ce code

 Map<String, String> list = new HashMap<String, String>();
list.put("number1", "one");
list.put("number2", "two");

comment puis-je créer un "alias" du type

 Map<String, String>

à quelque chose de plus facile à réécrire comme

 // may be something like this
theNewType = HashMap<String, String>;

theNewType list = new theNewType();
list.put("number1", "one");
list.put("number2", "two");

fondamentalement, ma question est de savoir comment créer un "alias" pour un "type" afin que je puisse le rendre plus facile à écrire et plus facile lorsque j'ai besoin de modifier l'ensemble du code du programme.

Merci et désolé si c'est une question idiote. Je suis un peu nouveau en Java.

62voto

KARASZI István Points 15162

Il n'y a pas d'alias en Java. Vous pouvez étendre la HashMap avec votre classe comme ceci :

 public class TheNewType extends HashMap<String, String> {
    // default constructor
    public TheNewType() {
        super();
    }
    // you need to implement the other constructors if you need
}

Mais gardez à l'esprit que ce sera une classe, ce ne sera pas la même chose que vous tapez HashMap<String, String>

14voto

Rom1 Points 1612

Il n'y a pas d' typedef en Java, et il n'y a pas d'idiome commun pour les types d'alias. Je suppose que tu pourrais faire quelque chose comme

 class StringMap extends HashMap<String, String> {}

mais ce n'est pas courant et ne serait pas évident pour un mainteneur de programme.

10voto

Walmart_Hobo Points 151

Bien que Java ne le supporte pas, vous pouvez utiliser une astuce générique pour le simuler.

 class Test<I extends Integer> {
    <L extends Long> void x(I i, L l) {
        System.out.println(
            i.intValue() + ", " + 
            l.longValue()
        );
    }
}

Source : http://blog.jooq.org/2014/11/03/10-things-you-didnt-know-about-java/

3voto

Ingo Points 21438

Le plus proche auquel on puisse penser est de créer une classe wrapper comme celle-ci

 class NewType extends HashMap<String, String> {
     public NewType() { }
}

J'aimerais vraiment que Java ait une fonction d'alias de type son.

1voto

Michael Borgwardt Points 181658

Rien de tel n'existe en Java. Vous pourrez peut-être faire quelque chose avec des modèles IDE ou la saisie semi-automatique, et vous attendre à une inférence de type générique (limitée) dans Java 7.

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