当前位置: 首页 > 知识库问答 >
问题:

Java奇怪的运算符()->含义和字符串操作[重复]

左丘季
2023-03-14

今天我遇到了一段我不懂的奇怪代码。

这是什么意思()-

method( ()-> System.out.println("Hello") );

另一个问题是,字符串的输出是什么:

[AB][CD]*EF+(X/Y)

当然没有任何A、B等的例子。但是我有这样的答案

ABCDEFX、ACEFXX、ACEFXA、,

我不记得了

有人能帮我吗?

共有1个答案

仲孙善
2023-03-14

假设您有一个声明一个方法的接口:

public static interface MyFunctionalInterface {
    void m1();
}

并且您有一个接收该类型的对象作为参数的方法:

public void method(MyFunctionalInterface i) { ... }

您可以实现该接口并使用匿名内部类立即使用它,如下所示:

method( new MyFunctionalInterface() {
    public void m1() {
        System.out.println("Hello");
    }
});

在Java 8中,可以用lambda表达式替换它,例如您显示的表达式:

method( () -> System.out.println("Hello"); );

空参数表示方法,没有参数。

假设您使用的函数接口有一个带有一个参数的方法(如果您的方法的形式为<代码>方法2(ActionListener s){…}) 例如),然后您可以使用:

method2( e -> System.out.println("Hello"); );

这与执行此操作相同:

method2( new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        System.out.println("Hello");
    }
});

有许多关于Java 8中Lambda表达式的教程。这是一个很好的快速开始。

 类似资料:
  • java运算符"的含义是什么-

  • 问题内容: 嗨,我只是想知道为什么这段代码(至少对我来说)产生错误的结果。 好吧,我可能在这里错了 我猜想,如果paperType等于“ Bond”,则说明为“ Paper:Bond”,如果paperType不等于“ Bond”,则说明为“ Paper:Other”。 但是,当我运行这段代码时,结果描述是“ Bond”还是“ Other”,让我想知道字符串“ Paper:”去了哪里??? 问题答案

  • 问题内容: 如何从字符串中删除奇怪的和不需要的Unicode字符(例如带问号的黑色菱形)? 更新: 请告诉我对应于“其中带有问号的黑色菱形”的Unicode字符串或正则表达式。 问题答案: 带问号的黑色菱形不是unicode字符- 它是字体无法显示的字符的占位符。如果字符串中存在一个字形,而该字形不是用于显示该字符串的字体,则将看到占位符。定义为U + FFFD:它的外观取决于您使用的字体。 您可

  • 结果是真是假 我不知道我的运算符重载有什么问题?(mc2应该小于mc1) 我不确定在BST中搜索“MyClass”节点是否正确?结果是“未找到”......我将其追踪到“BST. cpp”,发现问题也出现在“if(项目 谁能帮我或者给我一个提示......非常感谢!

  • 问题内容: 为什么此代码有效? 为什么这会引发异常? 但是最奇怪的是,该代码也可以成功运行,没有任何异常: 看来Java的三元运算符会改变行为。有人可以解释为什么吗? 问题答案: 该行为在JLS- 条件运算符中 指定: 如果第二和第三个操作数中的一个是原始类型T的,并且其他的类型是施加装箱转换(§5.1.7)到T的结果,则 条件表达式的类型为T 。 强调我的。因此,在第二种情况下: 由于第三个操作

  • 但最奇怪的是,这段代码也在没有任何异常的情况下成功运行: 看起来Java的三元运算符改变了行为。有人能解释一下这是为什么吗?