Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用具有相同名称的类来扩展Java类_Java - Fatal编程技术网

是否可以使用具有相同名称的类来扩展Java类

是否可以使用具有相同名称的类来扩展Java类,java,Java,我正在处理一个大得离谱的代码库,需要将文件从一个包移动到另一个包。但是,我在本地没有完整的代码库,因此我不确定是否找到并更新了对原始文件的所有引用。为了确保不破坏任何内容,我希望保留原始文件,并让它扩展我创建的新文件。理想情况下,他们都应该有完全相同的名字。随着时间的推移,我计划弃用并删除旧文件,但目前这似乎是最健壮的解决方案。但是,我不知道如何让它在Java中工作 这是新的课程: package myproject.util.http; import javax.servlet.http.H

我正在处理一个大得离谱的代码库,需要将文件从一个包移动到另一个包。但是,我在本地没有完整的代码库,因此我不确定是否找到并更新了对原始文件的所有引用。为了确保不破坏任何内容,我希望保留原始文件,并让它扩展我创建的新文件。理想情况下,他们都应该有完全相同的名字。随着时间的推移,我计划弃用并删除旧文件,但目前这似乎是最健壮的解决方案。但是,我不知道如何让它在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

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

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

只需删除import并使用完全限定的名称
myproject.util.http.MyServlet
您可以这样做,但需要删除
import
语句

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