【问题标题】:Java equivalent of .NET Action<T> and Func<T,U>, etc [duplicate]Java 等效于 .NET Action<T> 和 Func<T,U> 等 [重复]
【发布时间】:2010-07-14 08:47:12
【问题描述】:

Java 中是否有任何标准的通用“回调”或“函数/方法”类型,例如 .NET 中的 System.Action&lt;T&gt;System.Func&lt;T,U&gt;

在我的具体情况下,我需要一个类来包装一个方法,该方法接受一个 T 类型的(通用)参数并且不返回任何内容(即 void)。

是的,为自己创建这样一个类/接口很容易,但如果有标准库类,我更喜欢。

【问题讨论】:

    标签: java .net functor strategy-pattern


    【解决方案1】:

    我不相信标准库中有这样的东西,没有(在撰写本文时,2010 年)。其他库也有它们——比如 Guice 的 Provider&lt;T&gt; 和 Guava 的 Function&lt;F, T&gt;Supplier&lt;T&gt;Predicate&lt;T&gt;...所以如果你已经在使用库,你可能想看看它们在这个方向上提供了什么。

    (编辑:如前所述,这些是返回内容的接口 - 与Func&lt;T, U&gt; 非常相似,但类似于Action&lt;T&gt;。)

    【讨论】:

    • 这些中的任何一个如何等效?您建议的每个项目都应返回一个值。见我的related question
    • @glenviewjeff:它们与Action&lt;T&gt; 不相似,但它们与Func&lt;T, U&gt; 相似。
    • @glenviewjeff:如果您不需要返回值,您可以随时使用java.lang.Void。 “标准化”Func&lt;T,U&gt; 总比没有好,imo。
    • 这就是为什么我喜欢 C# 而不是 Java。
    • @ZenLulz:确实,现在可以了。不过,我不会修改 7 年前的所有答案,恐怕......
    【解决方案2】:

    Java 标准库不提供任何这样的类。

    您可以使用提供fj.F1&lt;T, fj.Unit&gt;Functional Java 库,它基本上等同于.NET 中的System.Action&lt;T&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多