具有可选项的泛型

时间:2016-01-20 10:32:55

标签: java generics optional

我使用javas泛型,我想使用Java 8 Optional。

我需要的只是我可以使用这个Optional,包含扩展/实现XYInterface的K类。

这是我的示例代码:

import java.util.Optional;
public class OptionalGeneric<Optional<K extends InterfaceXY>> {
       ...
public Optional<K> getOptionalItem(){...}
}

Eclipse始终显示警告:

  

可选类型不是通用的;它无法参数化   参数

我应该如何写这个课来获得这个项目?

2 个答案:

答案 0 :(得分:7)

在具有类型参数的类中,您只能直接指定类型参数(如MyCls<X extends A, Y extends B, Z>中所示)。然后,您可以在类中的任何位置使用泛型类型,包括作为其他类型的参数:

public class OptionalGeneric<K extends InterfaceXY> {
    public Optional<K> getOptionalItem(){...}
}

正如您在上面声明的那样,编译器认为您的类型参数被称为Optional,并且当类型参数本身参数化时会变得混乱。

答案 1 :(得分:1)

你需要:

import java.util.Optional;
public class OptionalGeneric<K extends InterfaceXY> {
       ...
public Optional<K> getOptionalItem(){...}
}

该课程在K而不是Optional<K>.

上进行了参数化