我想知道是否有任何区别,以及在方法内部或外部使用get()时哪个想法更好。我在流上进行操作,并返回其结果以在另一个类中对其进行操作。
例如:
class FirstClass{
//...
public static Optional<MyObject1> myMethod(MyObject2 myObject2) {
return map.entrySet()
.stream()
.filter(a -> Objects.equals(a.getValue(), myObject2))
.map(Map.Entry::getKey)
.findFirst();
}
}
然后在第二节课中:
//...
MyObject1 myObject1 = firstClass.myMethod(myObject2).get();
要么:
class FirstClass{
//...
public static MyObject1 myMethod(MyObject2 myObject2) {
return map.entrySet()
.stream()
.filter(a -> Objects.equals(a.getValue(), myObject2))
.map(Map.Entry::getKey)
.findFirst()
.get();
}
}
和:
//...
MyObject1 myObject1 = firstClass.myMethod(myObject2);
最佳答案
第一个解决方案更好。FirstClass
只是提供了一种方法,而不知道如何使用它。它只是执行了应该做的事情,而又没有对论据规定太多。
如果需要,取决于调用方是否在get
上失败。更好的是,调用方可能希望处理空情况并返回特定错误或做进一步的工作。