Existe-t-il un équivalent Java ou une méthodologie pour le mot-clé typedef en C ++?


Answers

Si c'est ce que vous voulez dire, vous pouvez simplement étendre la classe que vous souhaitez typedef, par exemple:

public class MyMap extends HashMap<String, String> {}
Question

Venant d'un arrière-plan C et C ++, j'ai trouvé l'utilisation judicieuse de typedef pour être incroyablement utile. Connaissez-vous un moyen d'obtenir des fonctionnalités similaires en Java, qu'il s'agisse d'un mécanisme Java, d'un modèle ou de toute autre méthode efficace que vous avez utilisée?




Vous pouvez utiliser un Enum, bien que ce soit sémantiquement un peu différent d'un typedef en ce sens qu'il ne permet qu'un ensemble restreint de valeurs. Une autre solution possible est une classe wrapper nommée, par exemple

public class Apple {
      public Apple(Integer i){this.i=i; }
}

mais cela semble beaucoup plus maladroit, d'autant plus que le code n'indique pas clairement que la classe n'a pas d'autre fonction que celle d'alias.




Peut-être que cela pourrait être un autre remplacement possible:

@Data
public class MyMap {
    @Delegate //lombok
    private HashMap<String, String> value;
}






Vraiment, la seule utilisation de typedef qui se répercute sur Javaland est l'aliasing, c'est-à-dire donner plusieurs noms à la même classe. Autrement dit, vous avez une classe "A" et vous voulez que "B" se réfère à la même chose. En C ++, vous feriez "typedef BA";

Malheureusement, ils ne le supportent tout simplement pas. Cependant, si vous contrôlez tous les types impliqués, vous pouvez tirer un vilain hack au niveau de la bibliothèque - soit vous étendez B depuis A, soit vous avez B implémenté.