在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;
}
答案 0 :(得分:0)
首先,您的代码有语法错误,在c
和{
之间的第二个第一行中应该有一个->
。
第二个创建一个非同步对象,第一个只创建一个静态方法 所以他们不一样。
此外,静态方法可以在流API中使用 如果你有:
class A {
static Object a(Object x) { return x; /* replace with your code */ }
}
你可以:
xxxList().stream().map(A::a)
创建方法通常被认为是脏的,因为它是全局可见的 建议在不声明变量的情况下使用lambda表达式。