使用仅在子类中定义的方法 - JAVA

using a method that is only defined in the subclasses - JAVA

我正在尝试为我只能访问接口的 java 项目实现一个插件。
该项目具有以下结构:

超级class: 一个
subclasses: B, C, E and F

所有子classes B、C、D、E 和 F 都扩展了 class A 并且有一个名为“execute()”的方法。这个方法没有在superclass(A).

中定义

现在我想在我的插件中实现一个名为“doSomething()”的方法,它使用子classes B、C、D、E 和 F 的“execute()”方法。
而且我不想将相同的方法重复 4 次(对于每个子class)。

当我将 superclass (A) 作为参数时,我无法访问 subclasses:

中定义的方法
public void doSomething(A a) {
   a.execute()
}

我还尝试生成 doSomething() 方法并定义多个上限,如下所示:

public <T extends B, C, D, E, F> void doSomething(T t) {
   t.execute();
}

但是不可能在上限中定义多个 class,因为不可能有类型继承自多个 super-class.

有没有什么方法可以实现 doSomething() 方法而不复制它或更改子classes 的源代码?
请注意,我无法更改任何给定的 classes (A, ... F)。

很简单,声明parent为abstract,声明execute()abstract,同样在class中。然后在 parent 中也声明 doSomething 但使其不抽象。然后从 doSomething()

调用 execute()
abstract class Parent {
 abstract void execute();
void doSomething() {
 execute();
}
}

class B extends Parent {
 void execute() {
  //do some specific things for B
 }
}

可能是这样的:

public static void doSomething(Object object) {
        try {
            Method method = object.getClass().getDeclaredMethod("execute", null);
            method.invoke(object);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }

A b = new B();
doSomething(b);