Tôi hiểu cách sử dụng các proxy động trong Java nhưng những gì tôi không hiểu là cách VM thực sự tạo ra một proxy động. Nó có tạo ra bytecode và tải nó không? Hay cái gì khác? Cảm ơn.Proxy động của Java thực sự hoạt động như thế nào?
10
A
Trả lời
12
Ít nhất cho việc thực hiện của Sun, nếu bạn nhìn vào mã nguồn của java.lang.reflect.Proxy
bạn sẽ thấy rằng có, nó tạo ra mã byte on-the-fly (sử dụng lớp sun.misc.ProxyGenerator
) .
5
tôi đề nghị bạn đọc Dynamic Proxy Classes:
Phương pháp Proxy.getProxyClass trả đối tượng java.lang.Class cho một proxy lớp cho một bộ nạp lớp và một mảng của giao diện. Lớp proxy sẽ được xác định trong bộ nạp lớp được chỉ định và sẽ triển khai tất cả các giao diện được cung cấp . Nếu một lớp proxy cho cùng một hoán vị giao diện đã được xác định trong lớp bộ tải, thì lớp proxy hiện tại sẽ được trả lại; nếu không, lớp proxy cho các giao diện đó sẽ là được tạo động và được xác định trong trình tải lớp. [tôi nhấn mạnh]
James, bạn giống như một guru Java. Bạn chỉ thử nghiệm chúng tôi với câu hỏi này? – erickson
Haha. Tôi biết ngôn ngữ Java nhưng tôi không phải là một chuyên gia máy ảo thực sự. :) –