Java 带可选项的泛型

Java 带可选项的泛型,java,generics,optional,Java,Generics,Optional,我使用的是javas泛型,我想使用java8可选 我所需要的是,我可以使用这个可选的,它包含一个扩展/实现XY接口的K类 下面是我的示例代码: import java.util.Optional; public class OptionalGeneric<Optional<K extends InterfaceXY>> { ... public Optional<K> getOptionalItem(){...} } import java.u

我使用的是javas泛型,我想使用java8可选

我所需要的是,我可以使用这个可选的,它包含一个扩展/实现XY接口的K类

下面是我的示例代码:

import java.util.Optional;
public class OptionalGeneric<Optional<K extends InterfaceXY>> {
       ...
public Optional<K> getOptionalItem(){...}
}
import java.util.Optional;
公共类可选泛型{
...
公共可选getOptionalItem(){…}
}
Eclipse始终显示一条警告:

可选类型不是泛型;它不能用参数化 论据


我应该如何编写此类来获取项目?

在具有类型参数的类中,您只需直接指定类型参数(如在
MyCls
中)。然后在类中的任何位置使用泛型类型,包括作为其他类型的参数:

public class OptionalGeneric<K extends InterfaceXY> {
    public Optional<K> getOptionalItem(){...}
}
公共类可选通用{
公共可选getOptionalItem(){…}
}

正如您在上面声明的,编译器认为您的类型参数被称为
Optional
,当类型参数本身被参数化时,编译器会感到困惑

在具有类型参数的类中,只能直接指定类型参数(如在
MyCls
中)。然后在类中的任何位置使用泛型类型,包括作为其他类型的参数:

public class OptionalGeneric<K extends InterfaceXY> {
    public Optional<K> getOptionalItem(){...}
}
公共类可选通用{
公共可选getOptionalItem(){…}
}
正如您在上面声明的,编译器认为您的类型参数被称为
Optional
,当类型参数本身被参数化时,编译器会感到困惑

您需要:

import java.util.Optional;
public class OptionalGeneric<K extends InterfaceXY> {
       ...
public Optional<K> getOptionalItem(){...}
}
import java.util.Optional;
公共类可选泛型{
...
公共可选getOptionalItem(){…}
}
该类在
K
上参数化,而不是
可选。

您需要:

import java.util.Optional;
public class OptionalGeneric<K extends InterfaceXY> {
       ...
public Optional<K> getOptionalItem(){...}
}
import java.util.Optional;
公共类可选泛型{
...
公共可选getOptionalItem(){…}
}

该类在
K
上参数化,不是
可选。

可能提到他出错的原因是他声明为“可选”的方式被视为泛型类型变量/参数,而不是java.util.Optional类。可能提到他出错的原因是他声明为“可选”的方式被视为泛型类型变量/参数,而不是java.util.Optional类。