2013-03-01 43 views
5

Tôi đang làm việc với một mật mã lớn và cần di chuyển một tệp từ gói này sang gói khác. Tuy nhiên, tôi không có toàn bộ codebase cục bộ, vì vậy tôi không chắc liệu tôi có tìm thấy và cập nhật mọi tham chiếu đến tệp gốc hay không. Để đảm bảo rằng tôi không phá vỡ bất cứ điều gì, tôi muốn để lại tập tin ban đầu, và chỉ đơn giản là có nó mở rộng các tập tin mới mà tôi tạo ra. Lý tưởng nhất, cả hai đều có cùng tên chính xác. Làm thêm giờ, tôi dự định sẽ ngừng sử dụng và xóa tệp cũ, nhưng hiện tại điều này có vẻ là giải pháp mạnh mẽ nhất. Tuy nhiên, tôi không thể tìm ra cách làm cho nó hoạt động trong Java.Có thể mở rộng một lớp Java với một tên có cùng tên

Đây là lớp mới:

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 
    } 

} 

Đây là lớp cũ mà mở rộng mới:

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 
} 

Thật không may, tôi nhận được lỗi:

MyServlet is already defined in this compilation unit 

Đây có phải là có thể, hoặc tôi sẽ phải đưa ra một tên mới cho lớp cha mẹ.

Trả lời

5

Bạn có thể làm điều đó nhưng bạn cần phải loại bỏ các tuyên bố import.

Nếu không, đơn vị biên dịch sẽ nhập tất cả các lớp được khai báo trong gói của bạn để sử dụng mà không có tên đầy đủ: điều này có nghĩa là bạn sẽ không thể phân biệt giữa hai số MyServlet, đây là lý do tại sao nó là bất hợp pháp.

0

Tất cả những gì bạn cần làm là xóa câu lệnh nhập và tất cả sẽ tốt.

0

Chỉ cần loại bỏ nhập khẩu và có tên đầy đủ myproject.util.http.MyServlet

Các vấn đề liên quan