Tôi có khả năng mở rộng một lớp tại thời gian biên dịch, nhưng tôi cần để có thể tạo một thể hiện của lớp con này khi chạy bằng cách sử dụng một cá thể của lớp cha đã được khởi tạo.Java: Mở rộng lớp lúc chạy
Điều này có thể được lý thuyết bởi vì các hàm tạo lớp bậc trên đã được gọi trước hàm tạo lớp con.
Tôi không có quyền truy cập vào chương trình đủ để thay đổi việc khởi tạo thành lớp con của tôi cũng như không làm gián đoạn quá trình khởi tạo gốc.
Trường hợp sử dụng: Có một mảng hiện tại của lớp X. Mã của tôi được tải sau. Tôi cần phải ghi đè lên một trong các phương thức của một trong các cá thể X với lớp con Y được mở rộng của tôi mở rộng X. Chương trình cha truy cập các đối tượng chỉ qua mảng đó, vì vậy tôi muốn thay thế phần tử mảng đó bằng cá thể Y của mình, nhưng nó cần cư xử như thể nó được khởi tạo ban đầu vào mảng đó. Tôi không thể chỉ kèm theo trường hợp siêu lớp và các cuộc gọi chuyển tiếp, và có những biến chứng khó khăn với việc phục hồi lại lớp cha.
Tôi hy vọng điều đó rõ ràng hơn.
Vui lòng lặp lại câu hỏi. –
Bạn cũng có thể cung cấp ví dụ về những gì bạn đang thực sự cố gắng thực hiện không? Thay vì chỉ mong muốn, nhưng có thể là không thể, phương pháp làm như vậy. – millimoose
Giả sử dòng hiện tại "public static Foo foo = new Foo();" mà tôi không thể thay đổi. Tôi có "public class Bar mở rộng Foo" và tôi muốn làm "foo = new Bar (...)" sao cho nó giống như dòng đầu tiên là "public static Foo foo = new Bar()". – JAKJ