gpt4 book ai didi

java - 如何使用方法引用表示法(Class::method)在 Java 中将方法作为参数传递?

转载 作者:行者123 更新时间:2023-12-01 14:08:51 24 4
gpt4 key购买 nike

我想在接受两个参数的 Utils 类中创建方法,第一个是域类,第二个是域类中的方法(作为引用传递)。此 Utils 类具有一个方法,该方法将创建该类的实例并在域类实例的范围内执行该方法。

例如领域类:

public class DomainClass {

public void dummyMethod() {}

}

Utils 类:

public class Utils {

public static void execute(Class<?> clazz, Runnable referenceMethod) {
Object objInstance = clazz.getConstructor().newInstance();
// execute the 'referenceMethod' on the scope of 'objInstance'
}

}

我想要的调用类似于:Utils.execute(DomainClass.class, DomainClass::dummyMethod)。但是,这种情况存在一些问题:

  1. 如何为 Utils 类传递此参数(现在我遇到了一些编译问题)?
  2. 如何在“objInstance”范围内调用“referenceMethod”?

最佳答案

DomainClass::dummyMethod 是对实例方法的引用,需要提供对象实例才能运行。这意味着它不能是 Runnable,但它可以是 Consumer,例如。

此外,它有助于使 execute 方法通用:

    public static <T> void execute(Class<T> clazz, Consumer<T> referenceMethod) {
try {
T objInstance = clazz.getConstructor().newInstance();
referenceMethod.accept(objInstance);
} catch (Exception e) {
e.printStackTrace();
}
}

现在你可以像这样调用execute:

    Utils.execute(DomainClass.class, DomainClass::dummyMethod);

关于java - 如何使用方法引用表示法(Class::method)在 Java 中将方法作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63565096/

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