Возможно ли, чтобы метод, полученный с помощью механизма рефлексии, воспринимался, как переопределённый метод?

Суть вопроса вот в чём: есть класс A с методом methodA() и есть класс B с объектом класса A objectA и методом methodB(), который рефлексивно вызывает метод methodA(). Так вот, возможно ли, чтобы система воспринимала метод methodB(), как переопределённый метод methodA() для объекта objectA?

Схематично так:

public class A
{
    ...

    privat void methodA()
    {
        ...
    }

    ...
}

public class B
{
    privat A objectA = new A();
    ...

    privat void methodB()
    {
        try
        {
            Method method = A.class.getDeclaredMethod("methodA");
            method.setAccessible(true);
            method.invoke(objectA);
        }
        catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e)
        {
            e.printStackTrace();
        }
    }

    ...
}

На просторах интернета нашёл во такой пример:

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class MethodOverride {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = MethodOverride.class;
        Method existingMethod = clazz.getDeclaredMethod("existingMethod");
        Method overridingMethod = clazz.getDeclaredMethod("overridingMethod");

        MethodUtil.overrideMethod(existingMethod, overridingMethod);
        existingMethod.invoke(null);
    }

    private static void existingMethod() {
        System.out.println("Existing method invoked!");
    }

    private static void overridingMethod() {
        System.out.println("Overriding method invoked!");
    }
}

class MethodUtil {
    public static void overrideMethod(Method existingMethod, Method overridingMethod) throws Exception {
        existingMethod.setAccessible(true);
        Method method = Method.class.getDeclaredMethod("override", Method.class);
        method.setAccessible(true);
        method.invoke(existingMethod, overridingMethod);
    }
}

Но в классе Method нет метода override().


Ответы (0 шт):