125 votos

Cambiar el nombre de la importación en Java, o importar dos clases con el mismo nombre

En Python puedes hacer lo siguiente:

from a import b as c

¿Cómo harías esto en Java, ya que tengo dos importaciones que están chocando?

160voto

Bozho Puntos 273663

No hay un mecanismo de aliasing de importación en Java. No puedes importar dos clases con el mismo nombre y usar ambas sin calificar.

Importa una clase y usa el nombre completo para la otra, es decir,

import com.text.Formatter;

private Formatter textFormatter;
private com.json.Formatter jsonFormatter;

78voto

siegi Puntos 1027

Como han mencionado las otras respuestas, Java no proporciona esta función.

La implementación de esta función ha sido solicitada varias veces, por ejemplo, como JDK-4194542: class name aliasing o JDK-4214789: Extender la importación para permitir el cambio de nombre del tipo importado.

De los comentarios:

Esta no es una solicitud irrazonable, aunque poco esencial. El uso ocasional de nombres completamente calificados no es una carga excesiva (a menos que la biblioteca realmente reutilice los mismos nombres simples una y otra vez, lo cual es mal estilo).

En cualquier caso, no cumple con el criterio de precio / rendimiento para un cambio de lenguaje.

Así que supongo que no veremos esta función en Java en el corto plazo :-P

67voto

sfussenegger Puntos 16204

Probablemente vale la pena señalar que Groovy tiene esta característica:

import java.util.Calendar
import com.example.Calendar as MyCalendar

MyCalendar myCalendar = new MyCalendar()

14voto

cardil Puntos 404

Hoy presenté un borrador de JEP a OpenJDK sobre esta característica de aliasing. Espero que lo reconsideren.

Si estás interesado, puedes encontrar un borrador de JEP aquí: https://gist.github.com/cardil/b29a81efd64a09585076fe00e3d34de7

10voto

sepp2k Puntos 157757

Java no te permite hacer eso. Necesitarás hacer referencia a una de las clases por su nombre completo y solo importar la otra.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X