我正在尝试解决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
的源代码以了解实现想法。