Có thể trong Java đơn giản để ghi đè lên một phương thức của một lớp học lập trình khi chạy (hoặc thậm chí tạo một phương thức mới)?Phản ánh Java: Làm cách nào để ghi đè hoặc tạo phương thức trong thời gian chạy?
Tôi muốn có thể thực hiện việc này ngay cả khi tôi không biết các lớp lúc biên dịch.
Những gì tôi có nghĩa là chính xác bằng cách ghi đè khi chạy:
abstract class MyClass{
public void myMethod();
}
class Overrider extends MyClass{
@Override
public void myMethod(){}
}
class Injector{
public static void myMethod(){ // STATIC !!!
// do actual stuff
}
}
// some magic code goes here
Overrider altered = doMagic(
MyClass.class, Overrider.class, Injector.class);
Bây giờ, gọi này ...
altered.myMethod();
... sẽ gọi Injector.myMethod() thay vì Overrider .myMethod().
Injector.myMethod() là tĩnh, bởi vì, sau khi làm "kỳ diệu" nó được gọi từ dụ lớp khác nhau (đó là Overrider), (vì vậy chúng tôi ngăn chặn nó từ truy cập vào các lĩnh vực địa phương).
Bạn có thể cho chúng tôi biết bạn muốn ghi đè loại đối tượng nào không? Trong nháy mắt thứ hai, vấn đề của bạn nhắc tôi về mục tiêu của mô hình tiêm phụ thuộc. – akarnokd