2013-03-01 7 views
5

Ich arbeite mit einer lächerlich großen Codebasis und muss eine Datei von einem Paket in ein anderes verschieben. Ich habe jedoch nicht die gesamte Codebasis lokal, daher bin ich mir nicht sicher, ob ich jeden Verweis auf die Originaldatei gefunden und aktualisiert habe. Um sicherzustellen, dass ich nichts kaputt mache, möchte ich die ursprüngliche Datei belassen und sie einfach durch die neue Datei erweitern lassen, die ich erstellt habe. Im Idealfall hätten sie beide denselben Namen. Überstunden, ich plane, die alte Datei abzulehnen und zu entfernen, aber für jetzt scheint das wie die robusteste Lösung. Ich kann jedoch nicht herausfinden, wie man es in Java zum Laufen bringt. HierIst es möglich, eine Java-Klasse um eine mit dem gleichen Namen zu erweitern?

ist die neue Klasse:

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 
} 

Leider habe ich den Fehler::

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 
    } 

} 

Hier ist die alte Klasse, die die neue erstreckt

MyServlet is already defined in this compilation unit 

Ist das möglich, oder werde ich mir einen neuen Namen für die Elternklasse einfallen lassen müssen.

Antwort

5

Sie können es tun, aber Sie müssen die import Anweisung entfernen.

Andernfalls importiert die Kompilierungseinheit alle Klassen, die in Ihrem Paket deklariert sind, um ohne den voll qualifizierten Namen verwendet zu werden: das bedeutet, dass Sie nicht zwischen den beiden MyServlet unterscheiden können, deshalb ist es illegal.

0

Alles was Sie tun müssen, ist die Import-Anweisung zu entfernen und alles wird gut.

0

Entfernen Sie einfach importieren und haben voll qualifizierten Namen myproject.util.http.MyServlet

Verwandte Themen