2009-12-11 25 views
5

Tôi đã hai Strings:Làm cách nào để mở rộng các lớp Java bằng Reflection?

String a="org.test.A"; 
String b="org.test.B"; 

tôi nhận được một lớp bằng Reflection

Class aClass = Class.forName(a); 

Tôi muốn Aclass mở rộng b, như:

Class okClass=aClass.extends(b);//how to implement this? 

làm thế nào để thực hiện điều này?

cách nhận okClass?

cảm ơn!

+4

Are lớp A và B đã được xác định ở nơi khác? Những gì các thuộc tính chính xác làm bạn mong đợi okClass để có ?? Câu hỏi không có ý nghĩa như nó được. –

Trả lời

8

Ngoài việc sử dụng JDK dynamic proxy, chỉ hoạt động bằng giao diện, bạn có thể sử dụng CGLIB hoặc javassist để mở rộng các lớp khi chạy.

3

Bạn có thể bắt đầu bằng cách đọc lên trên dynamic proxies. Proxy không mở rộng các lớp, nhưng chúng thực hiện các giao diện mà bạn có thể ánh xạ trên thực hiện lớp của bạn thông qua trình xử lý gọi.

4

Nói chung bạn muốn có thể tạo các lớp mới (không phải đối tượng) khi chạy. Bạn có thể sử dụng bytecode engineering hoặc java compiler api cho điều đó.

0

Như đã nói trước khi tôi khuyên bạn nên nhìn vào cglib nhưng cũng là javassist mà là một thư viện lớp cho bytecode chỉnh sửa ...

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