Как реализовать прокси объекта или прокси класса в Java?

У меня есть требование расширить файл.class в моем проекте, и мне нужно переопределить простой метод. Предположим, у меня есть класс A, который находится в некотором пакете.jar. Теперь я хочу переопределить метод test() класса AI, сделал это с помощью создания подкласса B класса A и переопределить его. Теперь в моем пакете приложения (это.jar) Объект создан для класса А. Этот объект вызывает метод класса А. Но я хочу сделать вызов метода класса В.

Моя идея заключается в том, чтобы прокси создания объекта во всем приложении. Всякий раз, когда объект класса A создается в то время, я хочу, чтобы какая-то конфигурация создавала объект класса B и передавалась классу init.

Кто-нибудь, пожалуйста, помогите мне реализовать этот тип механизма.

2 ответа

Ниже приводится простой подход (с использованием приведения типов), с помощью которого мы можем использовать объект класса Parent для вызова метода класса Child:

package testA;

public class A 
{

    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
    }

    public String aMethod(){
        System.out.println("Calling aMethod");
        return "aMethod";
    }
}



package testB;
import testA.*;

public class B extends A
{

    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
        A aClass = new B();
        aClass.aMethod();
        ((B)aClass).bMethod();
    }

    public String bMethod(){
        System.out.println("calling B method");
        return "bMethod";
    }
}

Вы можете блокировать или управлять созданием класса, только если конструктор является закрытым.

Если вы не можете перезаписать исходный базовый класс и хотите проксировать его, вам нужна фабрика и посоветуйте программистам использовать фабрику вместо непосредственного вызова конструктора базового класса.

В заводском коде вы можете вернуть подкласс, который работает как прокси вашего базового класса.

Помните, что это всего лишь совет. Вы не можете блокировать программистов, чтобы они вручную создавали экземпляры класса с помощью открытого конструктора.

Другие вопросы по тегам