Mik*_*der 151 java intellij-idea apache-commons java-8 apache-commons-collection
在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为Java没有箭头操作符.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Run Code Online (Sandbox Code Playgroud)
详细信息:Java 6,Apache Commons Collection,IntelliJ 12
更新/答案:事实证明IntelliJ 12支持Java 8,它支持lambdas,并且"折叠"Predicates并将它们显示为lambda.下面是"未折叠"的代码.
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
Run Code Online (Sandbox Code Playgroud)
Ant*_*n-M 30
我相信,这个箭头因你的IDE而存在.IntelliJ IDEA用一些代码做了这样的事情.这称为代码折叠.您可以单击箭头以展开它.
小智 27
当您想要实现接口时,这个也很有用
Runnable r = ()-> System.out.print("Run method");
Run Code Online (Sandbox Code Playgroud)
相当于
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
Run Code Online (Sandbox Code Playgroud)
sim*_*mas 12
这是一个lambda表达式.
这意味着,从listOfCars中,arg0是该列表的项目之一.有了他要做的那个项目,因此 - >,括号内的任何内容.
在这个例子中,他将返回符合条件的汽车列表
Car.SEDAN == ((Car)arg0).getStyle();
Run Code Online (Sandbox Code Playgroud)
java 8 中添加了新的lambda 表达式运算符
Lambda 表达式是方法编写的简写方式。
它间接用于实现功能接口
主要语法:(参数)-> { 语句;}
您应该了解一些有效编写 lambda 表达式的基本规则。