2013-03-01 87 views
5

我正在使用一个可笑的大代码库,并且需要将文件从一个包移动到另一个包。但是,我没有在本地编写整个代码库,所以我不确定是否找到并更新了对原始文件的每个引用。为了确保我不会破坏任何东西,我想离开原始文件,并且只是扩展我创建的新文件。理想情况下,他们都有完全相同的名称。加班,我打算废弃并删除旧文件,但现在这似乎是最强大的解决方案。但是,我无法弄清楚如何让它在Java中工作。是否有可能扩展一个具有相同名称的Java类

这是新类:

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 
    } 

} 

这里是旧的类,它扩展了新:

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 
} 

不幸的是,我得到的错误:

MyServlet is already defined in this compilation unit 

这是可能的,还是我将不得不想出一个父类的新名字。

回答

5

你可以做到这一点,但你需要删除import声明。

否则,编译单元将导入您的包中声明的所有类,而不使用完全限定名称:这意味着您将无法区分这两个MyServlet,这就是为什么它是非法的。

0

所有你需要做的就是删除导入语句,一切都会好的。

0

只是删除导入具有完全合格的名称myproject.util.http.MyServlet

相关问题