2011-09-25 13 views
5

En primer lugar, soy un nuevo en Java, por lo que mi pregunta podría ser estúpido, pero todavía tengo una respuesta :)Nombre de clase de conflictos importar nuevo paquete (Java)

tengo una clase que maneja los asuntos de visualización. Lo he llamado "Pantalla", pero el problema es: Necesito importar una clase llamada org.lwjgl.opengl.Display.

Por supuesto, tengo este error en mi declaración de la clase Display:

"Display" ya está definido en esta unidad de compilación

Y, por supuesto, puedo cambiar el nombre de mi clase, pero Me gustaría asegurarme de que no hay forma de evadir fácilmente este problema.

De una manera general (porque usando una biblioteca de juegos como LWJGL, supongo que tendré mucho de esto), ¿es una mejor idea prefijar toda mi clase para evitar etiquetas similares?

Actualización: La clase ya está en un paquete.

package Graphics; 

import org.lwjgl.LWJGLException; 
import org.lwjgl.opengl.Display; 
import org.lwjgl.opengl.DisplayMode; 

public class Display { ... } 

Gracias.

Respuesta

19

Si no puede cambiar el nombre de su propia clase, que sería la más fácil, entonces se puede eludir esto no importando la clase ofensivo y en lugar de usar el nombre de paquete completo, por ejemplo

org.lwjgl.opengl.Display display = new org.lwjgl.opengl.Display().

Por el contrario, debe poner su propia clase en paquetes y nunca usar el paquete predeterminado, por lo que es posible aplicar el mismo método para desambiguar sus propias clases.

+0

Acabo de agregar un poco de código en mi pregunta. – Cornelius

+1

@Cornelius: no importe la clase de visualización, use el nombre completo cuando lo necesite y se compilará. – JRL

+0

Ok, pensé que no era una forma adecuada de hacer esto. – Cornelius

0

Esto ocurre cuando el nombre de su clase de Java y el nombre de la biblioteca de importación es el mismo. En su caso, Scanner se refiere al nombre de la clase no para la biblioteca. Cambiar el nombre de la clase a otra cosa será la forma más sencilla de resolver el error.

public class Foo { 

private static class Display {...} 

} 

también ayudarán a resolver el problema.

Cuestiones relacionadas