gpt4 book ai didi

Java:在功能接口(interface)中通过反射调用方法

转载 作者:行者123 更新时间:2023-11-30 08:01:37 25 4
gpt4 key购买 nike

有谁知道,如果我可以在函数式接口(interface)的主体中通过反射调用方法?

我想返回一个谓词。所以典型的语法是例如

Predicate<Data> pred = data -> data.getVar1().equals("foobar");

但在我的特殊情况下,调用的类和方法都是未知的,因为它是可变的。

所以我想得到这样的东西:

Method method = Class.forName("Data").getMethod("getVar1", (Class[]) null);
Predicate<T> pred = data ->
((String) method.invoke(data, (Object[]) null)).equals("foobar");

但是 Eclipse 说:“未处理 TargetInvocationException”。所以我用 try-catch 包围它,但 Eclipse 已经显示相同的消息。

有人知道我的线索吗?

最佳答案

试试这个:

    Predicate<T> pred = data -> {
try {
return ((String) method.invoke(data, (Object[]) null)).equals("foobar");
} catch (IllegalAccessException illegalAccessException) {
//
} catch (IllegalArgumentException illegalArgumentException) {
//
} catch (InvocationTargetException invocationTargetException) {
//
}
return false;
};

关于Java:在功能接口(interface)中通过反射调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37417002/

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