java - 如何从具有通配符返回类型的泛型函数将返回值分配给对象?

标签 java generics java-8

这可能是一个非常基本的问题,但我无法弄清楚,我正在尝试从某个库中调用一个函数。该函数的签名如下。

<V> Channel<?,V> create(@Nonnull ChannelSetting setting);

我通过简单地在参数中传递 ChannelSetting 对象来调用此方法,我想将其返回结果分配给 Channel<String, SomeClassType>目的。如果我按如下方式进行,

Channel<String, SomeClassType> result = creatorObj.create(setting);

我收到编译错误类型不匹配。

Type mismatch: Cannot convert from Channel<capture#1-of ?, Object> to Channel<String,SomeClassType>

我不明白如何分配返回类型,我不能离开 因为我只需要特定类型。
谢谢,

最佳答案

方法签名告诉您 create()返回 Channel第一个类型变量是你不知道的。你不能安全地将它分配给,例如,Channel<String, SomeClassType>因为它实际上可能是 Channel<Integer, SomeClassType> ;根据您展示的 API,无法判断。

关于java - 如何从具有通配符返回类型的泛型函数将返回值分配给对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68897480/

相关文章:

java - Spring - 无法获取资源(405错误)

java - 不使用日历和日期实例显示星期几

java - 不知道为什么我收到 java.util.NoSuchElementException 错误

c# - 将非泛型转换为泛型

c# - "in"通用参数有什么作用?

java - 如何在子类对象上调用父类(super class)方法?

java - 在流中处理空指针和抛出异常

java - 使用 ThreadLocal 作为数据上下文是个好主意吗?

java - 如何在intellij中查看导入的jdk类文件的内容

java - 升级JDK8后JSP编译报错: "The type java.lang.CharSequence cannot be resolved"