为什么我需要在Java Guava函数中实现Apply?

vag*_*nce 0 java guava

例如,以下是标准模式

Function<Integer, Integer> powerOfTwo = new Function<Integer, Integer>() {
    @Override
    public Integer apply(Integer input) {
        return (int) Math.pow(input, 2);
    }
};
Run Code Online (Sandbox Code Playgroud)

实施申请有什么好处?写作会不会更清晰

Function<Integer, Integer> powerOfTwo = new Function<Integer, Integer>(Integer input) {
    return (int) Math.pow(input, 2);
};
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 6

是的,当然,但这就是Java语言的工作方式,至少在Java 8中引入lambda之前.这与Guava无关,而与Java语言有关.

从Java 8开始,你可以写

Function<Integer, Integer> powerOfTwo = input -> (int) Math.pow(input, 2);
Run Code Online (Sandbox Code Playgroud)

...但是如果你没有使用Java 8,那么语言的设计方式使得你必须编写第一个版本.

  • 我不确定实际上是否回答了OP的任何问题,这些问题似乎与匿名内部类的语法有关. (2认同)
  • 因为你无法传递方法.你只能传递物体.因此,您需要一个对象来为您提供方法. (2认同)