Я боролся с попыткой переопределить метод в общем абстрактном классе.
public abstract class Grandparent<T extends Grandparent>
public T set(final T other) //does stuff I don't want to do
public abstract class Parent<T extends Parent<T>> extends Grandparent<T>
public T set(final Parent<?> other) // does stuff I want to do
Все дочерние классы расширяют Parent <child>
.
Однако я не могу вызвать нужную мне функцию set (), просто создав один из дочерних классов.
Child_1 test = new Child_1();
Child_1 test_2 = new Child_1();
test.set(test_2) //this calls the function I don't want
Parent<Child_1> test_3 = new Child_1();
Parent<Child_1> test_4 = new Child_1();
test3.set(test_4) //this calls the function I do want
Однако это требует модификации уже существующего кода.Много этого.Я не хочу переписывать метод set в
public T set(T other)
, потому что тогда я потеряю возможность устанавливать один дочерний объект класса из другого дочернего объекта класса.
Как я могунаписать метод set (), чтобы запускать каждый раз, когда его вызывает дочерний объект, передавая любой другой дочерний объект, без каких-либо изменений во внешнем коде?