有没有办法关闭Kotlin中的使用站点协方差?

有没有办法关闭Kotlin中的使用站点协方差?,kotlin,Kotlin,注意:从Kotlin beta 4开始,此问题已修复 fun测试(a:List){ 上述Kotlin代码生成字节码: public static final void test(@NotNull List<? extends String> a) { Intrinsics.checkParameterIsNotNull(a, "a"); } publicstaticfinalvoidtest(@NotNull List该问题已在out dev分支中修复,并将在下一个公共

注意:从Kotlin beta 4开始,此问题已修复


fun测试(a:List){
上述Kotlin代码生成字节码:

public static final void test(@NotNull List<? extends String> a)
{
    Intrinsics.checkParameterIsNotNull(a, "a");
}

publicstaticfinalvoidtest(@NotNull List该问题已在out dev分支中修复,并将在下一个公共版本中提供。
还将有
JvmSuppressWildcards
/
JvmWildcard
注释,允许控制通用签名


作为一种临时解决方法,您可以在Kotlin声明中使用
MutableList

为什么它是一个bug?应该是这样吗?@voddan我已经在中解释了这个问题。@voddan我不认为这是一个二进制兼容性问题。引用该方法的java源代码没有编译。为什么很难承认它是一个bug,我不明白…无论如何,它已经修好了。@WinterYoung是的,我是说Beta4@WinterYoung是的,如果V可以有效地具有子类型,那么将有通配符,但是现在您可以使用
@jvmsuppresswidcards
注释。您可以在使用站点上的什么特定问题中找到有关方差泛型的一些解释?这是一个写得很糟糕的注释问题,并应更新以说明预期与实际发生的情况。缺少这一点会导致回答和评论中的混乱。您可以编辑您的问题以澄清吗?我认为我不需要。这个问题回答得很好。问题(标题)“关闭使用站点协方差”中说明了预期的情况丹尼斯·扎尔科夫显然理解这一点没有问题。
public static final void test(@NotNull List<? extends String> a)
{
    Intrinsics.checkParameterIsNotNull(a, "a");
}