2013-03-01 84 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

相關問題