2011-09-25 5 views
5

Prima di tutto, io sono un nuovo a Java, quindi la mia domanda potrebbe essere stupido, ma ho ancora bisogno di una risposta :)Nome classe conflitto importazione nuovo pacchetto (java)

ho una classe che gestisce le questioni di visualizzazione. L'ho chiamato "Display", ma il problema è: ho bisogno di importare una classe chiamata org.lwjgl.opengl.Display.

Naturalmente, ho questo errore alla mia dichiarazione classe Display:

"Display" è già definito in questa unità di compilazione

E, naturalmente, è possibile rinominare la mia classe, ma Mi piacerebbe essere sicuro che non vi è alcun modo per aggirare facilmente questo problema.

In generale (perché utilizzando una libreria di giochi come LWJGL, credo che ne avrò un sacco), è una buona idea anteporre tutta la mia classe per evitare un'etichetta simile?

Aggiornamento: la classe è già in un pacchetto.

package Graphics; 

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

public class Display { ... } 

Grazie.

risposta

19

Se non è possibile rinominare la propria classe, che sarebbe il più facile, allora si può aggirare questo non importando la classe incriminata e invece di usare il nome del pacchetto completo, per esempio

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

Al contrario, è necessario inserire la propria classe in pacchetti e non utilizzare mai il pacchetto predefinito, in modo che sia possibile applicare lo stesso metodo per disambiguare le proprie classi.

+0

ho appena aggiunto un po 'di codice nella mia domanda. – Cornelius

+1

@Cornelius: non importa la classe Display, usa il nome completo quando ne hai bisogno e verrà compilato. – JRL

+0

Ok, pensavo non fosse un modo corretto per farlo. – Cornelius

0

Ciò si verifica quando il nome della classe java e il nome della libreria di importazione sono uguali. Nel tuo caso Scanner si riferisce al nome della classe non per la libreria. Cambiare il nome della classe in qualcos'altro sarà il modo più semplice per risolvere l'errore.

public class Foo { 

private static class Display {...} 

} 

aiuterà anche a risolvere il problema.