当前位置: 首页 > 面试题库 >

转换Java 8 Lambda表达式以在Java 7中工作

强化
2023-03-14
问题内容

尝试转换这段代码以摆脱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)));

我环顾四周,但也许我只是不正确地理解它。


问题答案:

在Java 8中,lambda表达式替代了实现功能接口的匿名内部类。看起来您在这里使用的是Predicate,因为表达式是boolean

Predicate接口是Java
8中引入的,因此您需要自己重新创建它。您将无法创建defaultstatic方法,因此只需保留功能性接口方法即可。

public interface Predicate<T>
{
    public boolean test(T t);
}

然后,将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)));


 类似资料:
  • 我还在尝试理解lambda表达式。 我想将这个lambda表达式转换为“普通”表达式: 你们有主意吗? 提前谢谢。

  • 我正在尝试执行以下操作(cb=CriteriaBuilder): 但我得到以下语法错误: 绑定不匹配:(表达式之间的泛型方法 是否可以转换表达式

  • 我试图将js代码转换为java版本,但对正则表达式有点困惑:在js中,我有一个类似于:testString的表达式。拆分(“/(\w*\d)/g”) 我可以在java中使用什么等效语言?我试着用匹配器得到同样的结果。find()和split函数,但结果不一样。

  • 本文向大家介绍中缀表达式转后缀表达式相关面试题,主要包含被问及中缀表达式转后缀表达式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 对于中缀表达式,遇到操作数直接将其输出,如果遇到操作符和左括号全部压入栈中,若遇到右括号则将栈中元素全部弹出,直到遇到左括号为止。压栈过程中,若遇到其它操作符,从栈中弹出元素直到遇到更低优先级的操作符为止。

  • 问题内容: 我想在Go中使用regexp交换案例。我试图在Javascript中使用类似的方法,但是我不知道如何使Go理解$符号。 这是我的尝试。它适用于将所有高位转换为低位,反之亦然,但是我想做的是同时交换每个字母。例如,“ Hello” —>“ hELLO” 以下是我用Javascript编写的完美代码。 问题答案: 您不能(我认为)使用正则表达式执行此操作,但是使用可以很简单。

  • 本文向大家介绍将中缀转换为后缀表达式,包括了将中缀转换为后缀表达式的使用技巧和注意事项,需要的朋友参考一下 前缀表达式是人类可读和可解的。我们可以轻松地区分算子的顺序,也可以在计算数学表达式时先使用括号将其求解。计算机无法轻松地区分运算符和括号,这就是为什么需要后缀转换的原因。 要将中缀表达式转换为后缀表达式,我们将使用堆栈数据结构。通过从左到右扫描infix表达式,当我们得到任何操作数时,只需将