通过类访问器获取直接Java方法

0dxa2lsx  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(103)

有没有什么方法可以直接访问java.lang.reflect.Method对象呢?比如下面的例子中的MyUtils::sum

class MyUtils {
    static int sum(int a, int b) {
        return a + b;
    }
}

java.lang.reflect.Method myUtilsSumMethod = MyUtils::sum;
int sum = myUtilsSumMethod.invoke(null, 2, 3); // should be 5

或者我必须使用反射API来使用字符串名称吗?

MyUtils.class.getDeclaredMethod("sum", Integer.class, Integer.class)

因为一旦我重构了方法的名字,我就会在运行时得到一个异常,我希望在编译时就已经有了这个错误。

dgsult0t

dgsult0t1#

这里不需要反射-MyUtils::sum返回一个方法引用,可以将其存储在IntBinaryOperator中:

IntBinaryOperator myUtilsSumMethod = MyUtils::sum;
int sum = myUtilsSumMethod.applyAsInt(2, 3); // should be 5

相关问题