簡體   English   中英

是否可以使用具有相同名稱的Java類擴展它

[英]Is it possible to extend a Java class with one having the same name

我正在使用一個非常大的代碼庫,需要將文件從一個包移動到另一個包。 但是,我沒有本地的整個代碼庫,所以我不確定我是否找到並更新了對原始文件的每個引用。 為了確保我沒有破壞任何東西,我想保留原始文件,並簡單地擴展我創建的新文件。 理想情況下,它們都具有完全相同的名稱。 加班,我打算棄用並刪除舊文件,但目前這似乎是最強大的解決方案。 但是,我無法弄清楚如何讓它在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語句。

否則編譯單元將導入包中聲明的所有類,而不使用完全限定名:這意味着您將無法區分兩個MyServlet ,這就是為什么它是非法的。

您需要做的就是刪除import語句,一切都會好的。

只需刪除import並具有完全限定名稱myproject.util.http.MyServlet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM