我想知道在方法內部或外部使用get()時是否有任何區別,哪個想法更好。我運行在流式上,我將其結果返回給其他課程。Java 8 stream get()on可選 - 在方法內部還是外部?
例如:
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();
OR:
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);
第一個允許你也使用'#ifPresent','#orElse'等方法 – Rogue
這應該是沒有問題的。如果您認爲該對象始終存在,則第二種方法才起作用,否則將引發異常。如果是這樣的話,你永遠不應該返回一個'Optional'。另一方面,如果該值不被認爲總是存在,則不應該使用一個方法,如果該值不存在就會中斷。所以無論哪種情況,只有一個有效的方法。 – Holger