6

我正在使用一个非常大的代码库,需要将文件从一个包移动到另一个包。但是,我在本地没有整个代码库,所以我不确定我是否找到并更新了对原始文件的每个引用。为了确保不破坏任何东西,我想保留原始文件,并简单地让它扩展我创建的新文件。理想情况下,它们都具有完全相同的名称。加班,我计划弃用并删除旧文件,但目前这似乎是最强大的解决方案。但是,我无法弄清楚如何让它在 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

这可能吗,还是我必须为父类想出一个新名称。

4

3 回答 3

7

您可以这样做,但您需要删除该import语句。

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

于 2013-03-01T00:25:02.227 回答
1

只需删除导入并具有完全限定名称myproject.util.http.MyServlet

于 2013-03-01T00:24:18.263 回答
0

您需要做的就是删除导入语句,一切都会好起来的。

于 2013-03-01T00:23:39.917 回答