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

使用仅在子类中定义的方法-JAVA,java,generics,inheritance,subclass,superclass,Java,Generics,Inheritance,Subclass,Superclass,我正在尝试为一个java项目实现一个插件,在这个项目中我只能访问接口。 本项目结构如下: 超类:A 子类:B、C、E和F 所有子类B、C、D、E和F都扩展了类A,并有一个名为“execute()”的方法。此方法未在超类(A)中定义 现在我想在我的插件中实现一个名为“doSomething()”的方法,它使用子类B、C、D、E和F的“execute()”方法 我不想重复相同的方法4次(对于每个子类) 当我将超类(A)作为参数时,我无法访问子类中定义的方法: public void doSometh

我正在尝试为一个java项目实现一个插件,在这个项目中我只能访问接口。
本项目结构如下:

超类:A
子类:B、C、E和F

所有子类B、C、D、E和F都扩展了类A,并有一个名为“execute()”的方法。此方法未在超类(A)中定义

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

当我将超类(A)作为参数时,我无法访问子类中定义的方法:

public void doSomething(A a) {
   a.execute()
}
我还尝试泛化doSomething()方法并定义多个上界,如下所示:

public <T extends B, C, D, E, F> void doSomething(T t) {
   t.execute();
}
public void doSomething(T){
t、 执行();
}
但是不可能在上界中定义多个类,因为不可能有从多个超类继承的类型

有没有办法实现doSomething()方法而不复制它或更改子类的源代码

请注意,我无法更改任何给定的类(A,…F)。

非常简单,将父类声明为
抽象类
,并将
执行()声明为
抽象类
。然后在parent中声明
doSomething
,但不要抽象。然后从
doSomething()


可能是这样的:

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);

让这些子类实现一个名为
Executable
的接口,该接口定义
execute()
。然后你可以在
doSomething
中执行
public
问题是我不能更改任何给定的类(A,…,F)@Siraj'eddineBenzineb你没有在问题陈述中指定重要的内容,但是你可以修改哪个类?我只是在描述中添加了这个。我正在插件中的一个随机类中实现doSomething()方法。这似乎起作用了!既然这个问题没有更好的解决方案,我就批准这个方案。
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);