Java 带可选项的泛型
我使用的是javas泛型,我想使用java8可选 我所需要的是,我可以使用这个可选的,它包含一个扩展/实现XY接口的K类 下面是我的示例代码: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
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类。