假设我有一个接口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()?