You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin报错:类型实参超出边界,如何转换Java原始类型初始化代码?

解决Kotlin中「Type argument is not within its bounds」错误

Java中的原始类型初始化Bound bound = new Bound();在Kotlin中没有直接等价写法,因为Kotlin对泛型边界检查更严格,必须显式指定符合Bound<T : RawType?>约束的类型参数。

可行的转换方案有两种:

1. 使用星号投影(对应Java原始类型的常用替代方式)

星号投影*表示接受任何符合RawType?边界的类型参数,代码如下:

val bound = Bound<*>()

2. 显式指定具体的类型参数

如果明确知道需要的类型,直接指定符合RawType?约束的类型即可,比如:

  • 使用可空的RawType:
val bound = Bound<RawType?>()
  • 使用非空的RawType(业务允许时):
val bound = Bound<RawType>()

为什么直接写Bound()会报错?

Kotlin会尝试自动推断泛型类型,但无显式类型参数时,推断出的类型无法满足T : RawType?的边界要求,因此必须显式声明符合约束的类型参数。

内容的提问来源于stack exchange,提问作者Molly Tian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:09:37