2013-03-01 12 views
5

Sto lavorando con un codebase ridicolmente grande e ho bisogno di spostare un file da un pacchetto a un altro. Tuttavia, non ho l'intero codice base localmente, quindi non sono sicuro di aver trovato e aggiornato ogni riferimento al file originale. Per assicurarmi di non rompere nulla, vorrei lasciare il file originale, e semplicemente farlo estendere il nuovo file che ho creato. Idealmente, avrebbero entrambi lo stesso identico nome. Overtime, ho intenzione di deprecare e rimuovere il vecchio file, ma per ora sembra la soluzione più solida. Tuttavia, non riesco a capire come farlo funzionare in Java.È possibile estendere una classe Java con una con lo stesso nome

Ecco la nuova classe:

package myproject.util.http; 

import javax.servlet.http.HttpServlet; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public abstract class MyServlet extends HttpServlet 
{ 

    public void service (HttpServletRequest request, 
         HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // implementation of service 
    } 

} 

Ecco la vecchia classe che estende la nuova:

package myproject.util.net; 

import myproject.util.http.MyServlet; 

public abstract class MyServlet extends myproject.util.http.MyServlet 
{ 
// this class was deprecated, use myproject.util.http.MyServlet instead 
} 

Purtroppo, ottengo l'errore:

MyServlet is already defined in this compilation unit 

È questo possibile, o dovrò trovare un nuovo nome per la classe genitore.

risposta

5

Si può fare, ma è necessario rimuovere l'istruzione import.

Altrimenti l'unità di compilazione importerà tutte le classi dichiarate nel pacchetto da utilizzare senza il nome completo: ciò significa che non si sarebbe in grado di distinguere tra i due MyServlet, ecco perché è illegale.

0

Tutto ciò che devi fare è rimuovere la dichiarazione di importazione e tutto andrà bene.

0

Basta togliere l'importazione e hanno nome completo myproject.util.http.MyServlet

Problemi correlati