existe-t-il un moyen d’importer une classe sous un autre nom? Comme si j’avais une classe appelée javax.C et une autre classe appelée Java.C, je peux importer javax.C sous le nom C1 et importer Java.C. sous le nom de C2.
Nous pouvons faire quelque chose comme ceci en C #:
using Sys=System;
ou Vb:
Imports Sys=System
Non, il n'y a rien de tel en Java. Vous ne pouvez importer que des classes sous leur nom d'origine et devez utiliser le nom complet pour tout ce que vous n'importez pas (à l'exception de celles figurant dans Java.lang
et du package de la classe en cours).
Pour être bref, non, ce n'est pas possible en Java.
Non, je pense que Java délibérément abandonné typedef
. La bonne nouvelle est que si vous voyez un type, vous savez ce que c'est. Ce ne peut pas être un alias pour autre chose; ou un alias à un alias à ...
Si un nouveau concept mérite vraiment un nouveau nom, il mérite également un nouveau type.
L'exemple d'utilisation de Sys=System
sera mal vu par la plupart des développeurs Java.
Java ne supporte pas le renommage statique. Une idée est de sous-classer l'objet en question avec un nouveau nom de classe (mais cela peut ne pas être une bonne idée en raison de certains effets secondaires/limitations, par exemple votre classe cible peut avoir le modificateur final. Lorsque autorisé est utilisé getClass()
ou instanceof ClassToRename
, etc. (exemple ci-dessous adapté d'une réponse différente)
class MyApp {
public static void main(String[] args) {
ClassToRename parent_obj = new ClassToRename("Original class");
MyRenamedClass extended_obj_class_renamed = new MyRenamedClass("lol, the class was renamed");
// these two calls may be treated as the same
// * under certain conditions only *
parent_obj.originalFoo();
extended_obj_class_renamed.originalFoo();
}
private static class ClassToRename {
public ClassToRename(String strvar) {/*...*/}
public void originalFoo() {/*...*/}
}
private static class MyRenamedClass extends ClassToRename {
public MyRenamedClass(String strvar) {super(strvar);}
}
}