Java 8,静态方法与函数

时间:2017-12-11 16:41:29

标签: java static functional-programming

在Java 8中,我想创建一些返回参数的东西,或者如果参数为null,则创建一个实例。

我可以通过创建静态方法或UnaryOperator来实现。以下方法在技术上是否相同,或者是否存在技术差异,我应该注意这两种方法:

静态方法

static Cat initOrReturn(Cat c) {
    if (c==null) {
        return new Cat();
    }
    return c;
}

功能

UnaryOperator<Cat> initOrReturn = c -> {
    if (c==null) {
        return new Cat();
    }
    return c;
}

1 个答案:

答案 0 :(得分:0)

首先,您的代码有语法错误,在c{之间的第二个第一行中应该有一个->

第二个创建一个非同步对象,第一个只创建一个静态方法 所以他们不一样。

此外,静态方法可以在流API中使用 如果你有:

class A {
  static Object a(Object x) { return x; /* replace with your code */ }
}

你可以:

xxxList().stream().map(A::a)

创建方法通常被认为是脏的,因为它是全局可见的 建议在不声明变量的情况下使用lambda表达式。

相关问题