java - tutorial - jsoup select
java, ¿hay alguna manera de importar una clase con otro nombre? (4)
¿Hay alguna manera de importar una clase con otro nombre? Como si tuviera una clase llamada javax.C y otra clase llamada java.C. Puedo importar javax.C con el nombre C1 e importar java.C con el nombre C2.
Podemos hacer algo como esto en C #:
using Sys=System;
o Vb:
Imports Sys=System
Java no admite el cambio de nombre estático. Una idea es subclasificar el objeto en cuestión con un nuevo nombre de clase (pero puede no ser una buena idea debido a ciertos efectos colaterales / limitaciones, por ejemplo, su clase objetivo puede tener el modificador final. Donde está permitido el código puede comportarse de manera diferente si se comprueba explícitamente se usa getClass()
o instanceof ClassToRename
, etc. (Ejemplo a continuación adaptado de una respuesta diferente)
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);}
}
}
No, no hay nada como eso en Java. Solo puede importar clases con su nombre original y debe usar el nombre completo para todo lo que no importe (excepto los que están en java.lang
y el paquete de la clase actual).
No. Creo que Java abandonó deliberadamente typedef
. La buena noticia es que si ves un tipo, ya sabes lo que es. No puede ser un alias para otra cosa; o un alias a un alias para ...
Si un nuevo concepto realmente merece un nuevo nombre, probablemente también se merece un nuevo tipo.
El ejemplo de uso de Sys=System
será mal visto por la mayoría de los desarrolladores de Java.
Para ser breve, no, esto no es posible en Java.