2013-03-01 14 views
5

Pracuję z absurdalnie dużą bazą kodu i potrzebuję przenieść plik z jednego pakietu do drugiego. Jednak nie mam całego kodu źródłowego lokalnie, więc nie jestem pewien, czy znalazłem i zaktualizowałem każdą referencję do oryginalnego pliku. Aby upewnić się, że niczego nie zepsuję, chciałbym pozostawić oryginalny plik i po prostu rozszerzyć nowy plik, który utworzyłem. W idealnej sytuacji obie miałyby dokładnie taką samą nazwę. Nadgodziny, planuję wycofać i usunąć stary plik, ale na razie wydaje się, że jest to najsolidniejsze rozwiązanie. Jednak nie wiem, jak sprawić, aby działało w Javie.Czy możliwe jest rozszerzenie klasy Java o jedną o tej samej nazwie?

Oto nowa klasa:

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 
    } 

} 

Oto stary klasa, która rozszerza nowy:

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 
} 

Niestety, pojawia się błąd:

MyServlet is already defined in this compilation unit 

Czy ta możliwe, czy też będę musiał wymyślić nowe imię dla klasy rodziców.

Odpowiedz

5

Można to zrobić, ale trzeba usunąć oświadczenie import.

W przeciwnym razie jednostka kompilująca zaimportuje wszystkie klasy zadeklarowane w pakiecie do użycia bez w pełni kwalifikowanej nazwy: oznacza to, że nie będzie można rozróżnić między dwoma MyServlet, dlatego jest to nielegalne.

0

Wszystko, co musisz zrobić, to usunąć instrukcję importu i wszystko będzie dobrze.

0

Wystarczy usunąć import i mieć w pełni kwalifikowana nazwa myproject.util.http.MyServlet

Powiązane problemy