从没有接口名称的接口调用默认方法

时间:2018-01-11 23:27:33

标签: java invoke

假设我有一个接口A和一个实现A的类B.
A定义了一个带有一些默认实现的函数foo(),B也会覆盖这个默认实现并实现foo()。 />

我想使用 invoke(obj,args)函数调用A.foo()默认实现,因为我不知道在运行时定义了什么接口foo()点。

我知道如果我想在运行时使用B&#39实现的调用(比如我有一个包含B的aClass),我会做类似的事情:
aClass.getMethod("foo", args).invoke(aClass.newInstance(), args);

如何为A.foo执行上述操作?

编辑:我也只有方法的名称,我只能用它来获取它的Method对象,所以我不能像A.super.foo()那样明确地调用foo。

示例代码:
public interface A { default String foo() {return "foo";} }

public class B implements A { }

Class<?> anInterface = Class.forName("A");
Class<?> aClass = Class.forName("B");
Method aMethod = A.getMethod("foo", null)

如何仅使用此变量调用A.foo()?

0 个答案:

没有答案