gpt4 book ai didi

java-8 - 如何在接口(interface)中使用反射调用默认方法

转载 作者:行者123 更新时间:2023-12-02 00:43:24 28 4
gpt4 key购买 nike

public interface TestServiceIface {
default String test(String str, int flag) {
return str;
}
}

这样的接口(interface),如果实现了接口(interface),并且有一个实例,我如何调用默认方法?如果使用反射,怎么办?而我只有这个接口(interface),没有Impl类,也没有Impl实例。如何调用默认方法?

最佳答案

或者通过 MethodHandle,但请注意您实际上需要该接口(interface)的实现类:

static class Impl implements TestServiceIface {

}

以及用法:

    MethodType methodType = MethodType.methodType(String.class, String.class, int.class);
MethodHandle handle = MethodHandles.lookup().findVirtual(TestServiceIface.class, "test", methodType);

String result = (String) handle.invoke(new Impl(), "test", 12);
System.out.println(result); // test

关于java-8 - 如何在接口(interface)中使用反射调用默认方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45301195/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com