如何实现下面的功能

public T myFunction(Function<T> func)  //T is the return type
{
  //...some code
  return func();
}

我可以使用下面的函数,不需要在myFunction中声明参数a、b、c

myType result = myFunction(() -> doSomething(a, b , c))

推荐答案

正确的功能接口是Supplier<T>.它没有"输入"类型参数:

public <T> T myFunction(Supplier<T> func) {
    // myFunction logic 
    return func.get();
}

调用将与您的调用一样,假设doSomething()的返回类型为myType.

Java相关问答推荐

当耗时的代码完成时,Circular ProgressIndicator显示得太晚

在FML中删除关键帧动画

如何在Docker容器中使用wireock—Webhooks阻止请求?

如何将kotlin代码转换为java

使用包私有构造函数强制子类Java类

基本时态运算的ISO-8601周数据表示法

对某一Hyroby控制器禁用@cacheable

查找剩余的枚举

Com.google.firebase.database.DatabaseException:无法将类型为java.lang.Boolean的值转换为字符串.这是关于什么的?

如何从Keyloak映射Hibernate实体中的用户

如何为JavaFX Spring Boot应用程序制作Windows/MacOS/Linux安装程序

WebSockets和Spring Boot安全性出现错误401

解析方法";javax/imageio/metadata/IIOMetadata.getAsTree(Ljava/lang/String;)Lorg/w3c/dom/Node时加载约束冲突

如何读取3个CSV文件并在控制台中按顺序显示?(Java)

如何根据配置动态创建N个bean

如何从命令行编译包中的所有类?

java构造函数中的冻结操作何时发生?

Spring Integration SFTP 连接失败 - 无法协商 kex 算法的密钥交换

Swagger.io OpenApi v3.0 声明默认媒体类型

我可以使用一个 PoolingNHttpClientConnectionManager 运行多个 HttpAsyncClient 吗?