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

En Python puedes hacer un:

from a import b as c 

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

No hay ningún mecanismo de alias de importación en Java. No puede importar dos clases con el mismo nombre y usarlas sin calificar.

Importe una clase y use el nombre completo para la otra, es decir,

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

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() 

Como las otras respuestas ya indicadas, Java no proporciona esta característica.

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

De los comentarios:

Esta no es una solicitud irracional, aunque apenas esencial. El uso ocasional de nombres totalmente calificados no es una carga excesiva (a menos que la biblioteca realmente reutilice los mismos nombres simples derecha e izquierda, lo cual es un mal estilo).

En cualquier caso, no pasa la barra de precio / rendimiento por un cambio de idioma.

Así que supongo que no veremos esta característica en Java pronto 😛

Java no te permite hacer eso. Tendrá que consultar una de las clases por su nombre completo y solo importar la otra.

En realidad, es posible crear un acceso directo para que pueda usar nombres más cortos en su código haciendo algo como esto:

 package com.mycompany.installer; public abstract class ConfigurationReader { private static class Implementation extends com.mycompany.installer.implementation.ConfigurationReader {} public abstract String getLoaderVirtualClassPath(); public static QueryServiceConfigurationReader getInstance() { return new Implementation(); } } 

De esa manera solo necesita especificar el nombre largo una vez, y puede tener tantas clases con nombre especial como desee.

Otra cosa que me gusta de este patrón es que puedes nombrar la clase de implementación igual que la clase base abstracta, y simplemente colocarla en un espacio de nombres diferente. Sin embargo, eso no está relacionado con el patrón de importación / cambio de nombre.