【发布时间】:2016-09-21 20:51:58
【问题描述】:
有谁知道,我是否可以通过函数接口主体中的反射来调用方法?
我想返回一个谓词。所以典型的语法是例如
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 已经显示了相同的消息。
有人知道吗?
【问题讨论】:
-
封装method.invoke到method =)
-
动态加载的类
Data和编译时类型T有什么关系?期望其参数为Data类型的函数声称接受T类型的参数看起来不正确……
标签: java reflection interface functional-programming