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