尝试在 Java 中模仿 Scala 选项时出现问题



我正在尝试解决Java问题,基本上我想通过实现Option类来模仿Java中Scala Option的行为。我接受了几次测试,以确保我的实现按预期工作。第一个测试如下所示:

@Test
public void Empty_Option_Has_No_Value() {
    Assert.assertFalse(Option.<SomeClass> createEmptyOption()
            .hasValue());
}

你见过"Option.<SomeClass> createEmptyOption()"符号吗?我一直在尝试创建一个返回选项实例的 createEmptyOption() 方法,但我的代码无法编译。

关于如何实现createEmptyOption()方法的任何建议?

提前谢谢你。

使用的语法是使用类型参数调用泛型方法。您的方法应如下所示:

public abstract class Optional<T> {
    public static <O> Optional<O> createEmptyOption() {
        return new EmptyOptional<>();
    }
}

即您有一个返回Optional<O>的通用方法。

如果像这样调用它:

final Optional<Integer> optI = Optional.createEmptyOption();

然后编译器将推断O Integer。如果您在没有显式赋值的情况下调用它,编译器将无法推断类型,因此您需要提供它。这就是语法的作用。

查看 Guava Optional的源代码以了解实现想法。

最新更新