2012-08-17 31 views
18

Tôi phải tạo một số proxy, để thêm, ví dụ, ghi nhật ký. Một cái gì đó như thế:Có cách nào để tự động tạo trình bao bọc trong Eclipse không?

interface IMath { 
    public int add(a, b); 
} 

class Math implements IMath { 
    public int add(a, b) { return a + b; } 
} 

class MathWithLogs implements IMath { 
    private IMath realMath; 
    public int add(a, b) { 
     Log.d("tag", "valueable info"); 
     return realMath.add(a, b); 
    } 
} 

Mọi thứ đều miễn là các giao diện này không phải là 20 phương pháp và tôi phải thêm thứ gì đó vào chỉ một.

Câu hỏi của tôi là, có cách nào để tự động tạo lớp bao bọc với một số plugin cho nhật thực không?

Hoặc có thể có cách để thực hiện điều gì đó với chú thích để gọi phương thức từ realMath trừ khi được nêu khác (như @Override)?

+1

Bạn cũng có thể muốn xem AspectJ (hoặc nói chung, AOP) và cũng là các cơ chế Proxy tiêu chuẩn của Java. Những điều này sẽ xử lý một cách duyên dáng trường hợp sử dụng của bạn ở trên mà không yêu cầu bất kỳ lớp học mới nào được viết. – Romain

Trả lời

26

Nhấp chuột phải vào bất kỳ tập tin nguồn (java) và điều hướng đến source -> Override/Implement Methods/Generate Delegate Methods.

Đầu tiên sẽ dán cơ thể của tất cả các phương pháp giao diện trước mắt của bạn. thứ hai sẽ làm tương tự cho tất cả các hệ thống phân cấp lên đến Object (tôi đoán, không chắc chắn). Hy vọng điều này sẽ hữu ích.

+0

Hoặc là một trong số họ hỗ trợ tất cả các hệ thống phân cấp lên đến Object. Chỉ có một đại biểu hỗ trợ các đại biểu thường là những gì bạn muốn trong một lớp wrapper. Và đối với cái đó, bạn không thể chỉ cần nhấp chuột phải vào bất kỳ đâu trong tệp nguồn, bạn phải nhấp chuột phải vào trường mà bạn muốn ủy quyền. – Kidburla

9

Có, có bộ tạo mã nguồn được gọi là "Tạo phương thức đại biểu" sẽ thực hiện chính xác những gì bạn muốn.

5

Tôi mất một lúc sau khi đọc các câu trả lời khác để tìm ra chính xác những việc cần làm. Giải pháp là:

  1. Tạo lớp vỏ bọc (ban đầu trống) của bạn triển khai giao diện bắt buộc. Đảm bảo bỏ chọn "Phương pháp trừu tượng kế thừa" khi tạo lớp.
  2. Bên trong lớp trình bao bọc mới của bạn (sẽ hiển thị lỗi vào lúc này do thiếu triển khai giao diện), tạo trường có loại bằng giao diện được yêu cầu.
  3. Nhấp chuột phải vào trường bạn vừa tạo và chọn Nguồn -> Tạo phương thức đại biểu.
  4. Kiểm tra các phương pháp bạn muốn tạo và nhấp vào OK.
  5. Cuối cùng, thêm một hàm tạo đơn-arg hoặc phương thức setter cho trường (nó không được tạo tự động như một phần của quá trình này).
Các vấn đề liên quan