显然,Java没有委托或函数作为第一类值而是使用接口,但是最接近Func<>的接口是什么?或行动<> .NET委托?有Runnable和Callable<>,但只有不带参数的风格。
由于Java不能重载具有相同名称和不同数量的泛型类型参数的类型,我理解不能有单个共享接口名称,但可能存在Runnable1<>,Runnable2<>等等。
这种编程风格是不是在Java中使用过,还是我缺少任何现有的接口?
答案 0 :(得分:0)
我对.Net并不是很熟悉,但从目前为止我看到的情况看来,你通常会为你想要存储的每种类型的功能/动作创建一个界面。这听起来并不像你想要的那样。
(界面不是匿名的,它有一个名称,含义和文档,这可能使代码更容易阅读。另一方面,它是一个额外的麻烦,必须写它,你不能只是扔任何与签名匹配的功能。)
您是否有特定用例,您正在寻求推荐?制作广义陈述很难;)。
答案 1 :(得分:0)
我为你和我自己创造了一个罐子。)
maven info:
<dependency>
<groupId>com.incarcloud</groupId>
<artifactId>ac-func-tion</artifactId>
<version>1.1.0</version>
</dependency>
然后你可以编写像c#
这样的代码import com.incarcloud.lang.*;
Action<Integer> actFoo = (x)->{ System.out.println(x); }
actFoo.run(1024);
Func2<Integer, Integer, Integer> actAdd = (x,y)->{ return x+y; }
int sum = actAdd.call(5,6);
可在此处找到更多信息https://github.com/InCar/ac-func-tion