Java奇怪的运算符() - >意义和字符串操作

时间:2014-03-31 14:18:28

标签: java string operators

今天我遇到了一些我不理解的奇怪代码。

什么可能意味着像这样() - > 例如

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

另一个问题是,String的输出是什么:

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

当然没有任何A,B等实例。但我有答案如

ABCDEFX, ACEFXX, ACEFXA,

我不记得了他们

有人能帮助我吗?

1 个答案:

答案 0 :(得分:3)

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

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"); );

空参数表示m1()方法,没有参数。

假设您使用的功能接口有一个带有一个参数的方法(例如,如果您的方法的格式为method2(ActionListener s) { ... }),那么您将使用:

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

这与执行此操作相同:

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

在Java 8中有很多关于Lambda表达式的教程。This one是一个很好的快速入门。