相当于 Java 中的 C# 匿名方法吗?

2024-04-10

在 C# 中,您可以匿名定义委托(即使它们只不过是语法糖)。例如,我可以这样做:

public string DoSomething(Func<string, string> someDelegate)
{
     // Do something involving someDelegate(string s)
} 

DoSomething(delegate(string s){ return s += "asd"; });
DoSomething(delegate(string s){ return s.Reverse(); });

在Java中可以传递这样的代码吗?我正在使用处理框架,它有一个相当旧的 Java 版本(它没有泛型)。


Java 8 之前:

Java 与委托最接近的是单一方法接口。您可以使用匿名内部类。

interface StringFunc {
   String func(String s);
}

void doSomething(StringFunc funk) {
   System.out.println(funk.func("whatever"));
}

doSomething(new StringFunc() {
      public String func(String s) {
           return s + "asd";
      }
   });


doSomething(new StringFunc() {
      public String func(String s) {
           return new StringBuffer(s).reverse().toString();
      }
   });

Java 8 及以上版本:

Java 8 http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html将 lambda 表达式添加到该语言中。

    doSomething((t) -> t + "asd");
    doSomething((t) -> new StringBuilder(t).reverse().toString());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相当于 Java 中的 C# 匿名方法吗? 的相关文章

随机推荐

  • BaseX RESTXQ“你好世界”示例

    我正在努力开始使用基本 REST API 我已下载并安装了最新版本的 Windows 版 BaseX 我通过单击 BaseX 安装添加到 Windows 开始菜单中的 BaseX Server 开始 图标启动了 BaseX Server 看
  • node/express:使用Forever连续运行脚本时设置NODE_ENV

    我怎样才能设置NODE ENV http expressjs com guide html configuration当我使用时变量 参数为 生产 forever https github com indexzero forever启动我的
  • 如何利用 Android 的“清除缓存”按钮

    在 Android 的设置中 在 管理应用程序 活动中 单击应用程序时 数据会分解为应用程序 数据和缓存 还有一个清除缓存的按钮 我的应用程序缓存音频文件 我希望用户能够使用此按钮清除缓存 我如何存储它们 以便它们与缓存集中在一起并且用户可
  • 使用另一个域的用户凭据连接到 SQL Server

    如何使用另一个域中的用户登录名 密码连接到 SQL Server 数据库 如果我使用我的帐户连接到数据库 它工作正常 cnxn pyodbc connect DRIVER SQL Server SERVER server name DATA
  • Netbeans 错误:项目文件夹已存在且不为空

    我安装了Netbeans 因为我正在读这本书 Java in 21 days 我在编程领域完全是个新手 当我尝试在 Netbeans 中打开一个新项目时 出现错误 项目文件夹已存在且不为空 删除 nbproject 文件夹并重新启动 IDE
  • 如何让用户重新排序 UITableView 中的部分

    我正在开发一个包含股票的应用程序 按投资组合排列 所以这很适合表格视图 我正在研究编辑交互 它足够简单 允许用户添加或删除股票 将它们拖动到一个投资组合或另一个投资组合中 但我无法优雅地做的一件事是让用户将一个投资组合拖动到另一个投资组合的
  • 字符串损坏或 preg_match 错误?

    NO BREAK SPACE 和许多其他 UTF 8 符号需要 2 个字节来表示 http www fileformat info info unicode char a0 index htm 因此 在假定的 UTF8 字符串上下文中 非
  • Linux内核中的模块间通信

    我有两个 Linux 内核模块 其中一个可以为另一个提供一些功能 但使用该功能并不是必需的 即使第一个模块不存在 第二个模块也可以 并且应该 工作 如果我只是从第一个模块导出函数并在第二个模块中使用它 则第二个模块依赖于该符号 并且在没有第
  • 我可以在本地主机上使用实际网络环境进行性能测试吗?

    我需要测试在本地主机上运行的应用程序的性能 就像在在线环境中一样 我的意思是通过网络流量模拟 有限带宽模拟或其他参数进行的性能测试 就像在线一样 Apache Ab 可以模拟吗 我们用过Charles http www charlespro
  • Spring 与 JUnit 测试和依赖注入不起作用

    我尝试在 Junit 测试用例中使用 Spring 自己的依赖注入 import static org hamcrest CoreMatchers equalTo import static org hamcrest CoreMatcher
  • 有没有办法将背景图像设置为base64编码图像?

    我想在 JS 中动态更改背景 并且我的图像集采用 Base64 编码 我尝试 document getElementById bg image style backgroundImage url http amigo com 300107
  • 如何替换 Pandas 数据框字符串列中的文本?

    我的数据框中有一列 如下所示 range 2 30 50 290 400 1000 我想更换 逗号与 短跑 我目前正在使用这种方法 但没有任何改变 org info exc range replace inplace True 有人可以帮忙
  • 如何从存储中干净地删除证书

    您可以使用 certmgr msc 中的向导将证书安装到证书存储中 右键单击安装 有谁知道如何使用向导 代码 首选 脚本 干净地 删除所有证书 我希望能够从 LocalMachine 和 或 CurrentUser 存储中删除所有内容 我之
  • 应用程序传输安全阻止 HTTPS

    我的 ATS 有问题 我使用的是 XCode 9 1 我的开发目标是 11 0 我正在使用react native 0 49进行开发 我的程序正在获取https https www xxxx com https www xxxx com 具
  • 使用Windows powershell从实时(更新)日志文件中过滤字符串

    我有一台计算机正在通过串行端口记录来自设备的事件 Putty 正在将它们记录到文件中 我曾经在 Linux 机器上运行过这个 基本上会tail f event log gt gt script sh 这是 nix 脚本 bin bash o
  • 这个 jQuery 代码片段可以缩短吗?

    我刚刚开始使用 jQuery 虽然下面的代码可以完成工作 但我感觉它可以缩短 var accountAddress document createElement input addClass readOnly attr contentEdi
  • Grails 2.3 和 GGTS 3.4 停止按钮不起作用

    如何使用 grails 2 3 停止 GGTS 3 4 中的 grails 进程 GGTS 的停止按钮没有停止服务器运行 并且 java exe 进程仍然显示在任务管理器中 评论一下grails project fork BuildConf
  • 如何在每次实体框架数据库迁移后访问上下文

    当我添加迁移时 我使用 Up Down 方法获得适当的 DbMigration 类 我可以在其中进行架构更改 并且 使用 Sql 方法 也可以进行数据 内容更改 我希望能够使用数据库上下文在每次迁移时进行内容更改 我知道我可以在 Confi
  • if 语句后的变量声明

    另一个论坛上出现了一个问题 我知道如何解决它 但它揭示了我特有的编译器功能 该人收到错误 嵌入式语句不能是声明或标记语句 因为他们在 if 语句后面有一个变量声明 没有括号 这不是他们的意图 但他们注释掉了紧跟在 if 语句之后的代码行 这
  • 相当于 Java 中的 C# 匿名方法吗?

    在 C 中 您可以匿名定义委托 即使它们只不过是语法糖 例如 我可以这样做 public string DoSomething Func