我想知道是否有任何区别,以及在方法内部或外部使用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上失败。更好的是,调用方可能希望处理空情况并返回特定错误或做进一步的工作。

07-27 17:37