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

在Java中尝试模拟Scala选项时出现的问题,java,scala,Java,Scala,我试图解决一个Java问题,基本上我想通过实现一个Option类来模拟Java中Scala Option的行为。我得到了一些测试,以确保我的实现按预期工作。第一个测试如下所示: @Test public void Empty_Option_Has_No_Value() { Assert.assertFalse(Option.<SomeClass> createEmptyOption() .hasValue()); } public abstract

我试图解决一个Java问题,基本上我想通过实现一个Option类来模拟Java中Scala Option的行为。我得到了一些测试,以确保我的实现按预期工作。第一个测试如下所示:

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

    public static <O> Optional<O> createEmptyOption() {
        return new EmptyOptional<>();
    }
}
@测试
public void Empty_选项_没有值(){
Assert.assertFalse(Option.createEmptyOption()
.hasValue());
}
您是否见过
“Option.createEmptyOption()”
符号??我一直在尝试创建一个createEmptyOption()方法,该方法返回一个选项实例,但我的代码没有编译

有没有关于如何实现createEmptyOption()方法的建议


提前感谢。

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

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

    public static <O> Optional<O> createEmptyOption() {
        return new EmptyOptional<>();
    }
}
公共抽象类可选{
公共静态可选createEmptyOption(){
返回新的清空选项();
}
}
i、 e.您有一个返回
可选值的通用方法

如果您这样调用它:

final Optional<Integer> optI = Optional.createEmptyOption();
final optI=Optional.createEmptyOption();
然后编译器将推断
O
Integer
。如果像您这样在没有显式赋值的情况下调用它,编译器将无法推断类型,因此您需要提供它。这就是语法的作用


查看源代码了解实现思想。

是的,这是一个通用方法类型参数。它可用于推断方法(或构造函数)调用的泛型类型。@user2523463您使用什么版本的Java来完成此操作?编译错误是什么?谢谢你们的回复,伙计们,我已经实现了这个类;)谢谢蜘蛛鲍里斯的帮助!!我刚刚完成了选项课程,所有测试都是绿色的;)@ardlema很高兴它对你有用-如果答案对你有帮助,那么请。