Mar*_*ski 1 java string operators
今天我遇到了一部分我不明白的奇怪代码。
例如,这意味着什么 ()->
method( ()-> System.out.println("Hello") );
Run Code Online (Sandbox Code Playgroud)
另一个问题是,String 的输出是什么:
[AB][CD]*EF+(X/Y)
Run Code Online (Sandbox Code Playgroud)
当然没有任何 A、B 等实例。但我有这样的答案
ABCDEFX、ACEFXX、ACEFXA、
我不记得他们
有谁能够帮助我?
假设您有一个声明一个方法的接口:
public static interface MyFunctionalInterface {
void m1();
}
Run Code Online (Sandbox Code Playgroud)
并且您有一个接收该类型对象作为参数的方法:
public void method(MyFunctionalInterface i) { ... }
Run Code Online (Sandbox Code Playgroud)
您可以实现该接口并使用匿名内部类立即使用它,如下所示:
method( new MyFunctionalInterface() {
public void m1() {
System.out.println("Hello");
}
});
Run Code Online (Sandbox Code Playgroud)
在 Java 8 中,您可以将其替换为 lambda 表达式,例如您展示的表达式:
method( () -> System.out.println("Hello"); );
Run Code Online (Sandbox Code Playgroud)
空参数代表m1()方法,没有参数。
假设您使用的函数式接口有一个带有一个参数的方法(method2(ActionListener s) { ... }例如,如果您的方法具有表单),那么您将使用:
method2( e -> System.out.println("Hello"); );
Run Code Online (Sandbox Code Playgroud)
这与执行此操作相同:
method2( new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
});
Run Code Online (Sandbox Code Playgroud)
有很多关于 Java 8 中 Lambda 表达式的教程。这是一个很好的快速入门。