Tôi có một phương pháp tĩnh trong một số mã cũ, được nhiều khách hàng gọi. Tôi rõ ràng không có tùy chọn để ghi đè lên nó, hoặc thay đổi hành vi thông qua tiêm phụ thuộc. Tôi không được phép sửa đổi lớp hiện tại.Làm cách nào để thay đổi hành vi của phương pháp thông qua phản ánh?
Điều tôi muốn làm bây giờ là thay đổi hành vi (phương thức đó - với cùng chữ ký và kiểu trả về) bằng cách sử dụng sự phản chiếu.
Có thể không? Nếu không, bất kỳ mẫu thiết kế nào có thể cứu tôi không?
Cảm ơn!
EDIT: Có một số nhầm lẫn về những gì tôi có thể thay đổi/sửa đổi. Tôi không thể thay đổi bất kỳ lớp/phương thức hiện có nào - nhưng tôi có thể thêm nhiều lớp vào dự án. Điều tốt nhất tôi có thể làm với các lớp hiện có là chú thích chúng. Điều này được thực hiện để tránh vi phạm bất cứ điều gì trong mã hiện có - có nghĩa là một vòng kiểm tra hoàn chỉnh cho một dự án lớn.
CHỈNH SỬA 2: java.lang.Instrumentation không khả dụng cho Android - nếu không nó có vẻ phù hợp!
Tại sao phản ánh? –
Bạn không được phép thay đổi nó, nhưng bạn được phép sửa đổi nó thông qua sự phản ánh? Điều đó dường như có nhiều rủi ro hơn. – Keppil
Tôi nghĩ rằng điều này sẽ kết thúc trong một cơn ác mộng bảo trì. Mã sẽ nằm ở bất cứ ai đọc nó. Đi và nhận được sự chấp thuận để thay đổi lớp đó. – SpaceTrucker