gpt4 book ai didi

java - 不一样吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:26 27 4
gpt4 key购买 nike

我对以下两个方法声明感到困惑:

    private <U, T extends U> T funWorks(T child, U parent) {
// No compilation errors
}

private <T, U super T> T funNotWorks(T child, U parent) {
// compilation errors
}

难道上面两个都不是有效的吗?类比如果 U 是 T 的父级,则 T 是 U 的子级。那为什么第二个会报编译错误呢?

编辑:我认为,T extends TT super T 都是有效的。对吧?

最佳答案

  • 类型参数(您的示例)只能使用扩展(JLS #4.4):
TypeParameter:
TypeVariable TypeBoundopt

TypeBound:
extends TypeVariable
extends ClassOrInterfaceType AdditionalBoundListopt

AdditionalBoundList:
AdditionalBound AdditionalBoundList
AdditionalBound

AdditionalBound:
& InterfaceType
  • 通配符可以使用 extendssuper ( JLS #4.5.1 ):
TypeArguments:
< TypeArgumentList >

TypeArgumentList:
TypeArgument
TypeArgumentList , TypeArgument

TypeArgument:
ReferenceType
Wildcard

Wildcard:
? WildcardBoundsopt

WildcardBounds:
extends ReferenceType
super ReferenceType

关于java - <U, T extends U> 和 <T, U super T> 不一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com