Java与.NET Func<>最接近的是什么?和行动<>代表?

时间:2011-09-04 00:08:08

标签: java .net generics delegates

显然,Java没有委托或函数作为第一类值而是使用接口,但是最接近Func<>的接口是什么?或行动<> .NET委托?有Runnable和Callable<>,但只有不带参数的风格。

由于Java不能重载具有相同名称和不同数量的泛型类型参数的类型,我理解不能有单个共享接口名称,但可能存在Runnable1<>,Runnable2<>等等。

这种编程风格是不是在Java中使用过,还是我缺少任何现有的接口?

2 个答案:

答案 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