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 faire un "alias" le type
Map<String, String>
à quelque chose qui est 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 vous avez besoin de changer le code du programme entier.
Merci et désolé si c'est une question idiote. Je suis un peu nouveau en Java.
Il n'y a pas d'alias en Java. Vous pouvez étendre la classe 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>
Il n'y a pas d'équivalent 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 responsable de programme.
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/
Le plus proche pourrait penser à faire une classe wrapper comme ça
class NewType extends HashMap<String, String> {
public NewType() { }
}
Je souhaite vraiment Java avait une fonction d'alias de type sonore.
Rien de tel n'existe en Java. Vous pourriez être en mesure de faire quelque chose avec IDE modèles ou saisie semi-automatique, et attendons avec impatience (limité) inférence de type générique in Java sept.