试图转换这部分代码以摆脱lambda表达式,以便它能够在java 7中工作
System.out.println(nicksGraph.findPath(nicksGraph.nodeWith(new Coordinate(0,0)), (a->a.getX()==3 && a.getY()==1), new PriorityQueue<Node<Coordinate>, Integer>(funcTotal)));
Run Code Online (Sandbox Code Playgroud)
我环顾四周,但也许我只是没有正确理解它.
rge*_*man 10
在Java 8中,lambda表达式是实现功能接口的匿名内部类的替代.看起来你在这里使用a Predicate,因为表达式是a boolean.
该Predicate接口是在Java 8中引入的,因此您需要自己重新创建它.您将无法创建default或static方法,因此请保留功能接口方法.
public interface Predicate<T>
{
public boolean test(T t);
}
Run Code Online (Sandbox Code Playgroud)
然后,使用匿名类声明替换lambda表达式.
System.out.println(nicksGraph.findPath(
nicksGraph.nodeWith(new Coordinate(0,0)),
// Replacement anonymous inner class here.
new Predicate<Coordinate>() {
@Override
public boolean test(Coordinate a) {
// return the lambda expression here.
return a.getX()==3 && a.getY()==1;
}
},
new PriorityQueue<Node<Coordinate>, Integer>(funcTotal)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7488 次 |
| 最近记录: |