今天我遇到了一些我不理解的奇怪代码。
什么可能意味着像这样() - > 例如
method( ()-> System.out.println("Hello") );
另一个问题是,String的输出是什么:
[AB][CD]*EF+(X/Y)
当然没有任何A,B等实例。但我有答案如
ABCDEFX, ACEFXX, ACEFXA,
我不记得了他们
有人能帮助我吗?
答案 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是一个很好的快速入门。