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

使用BigDecimal的泛型类出现incompatible bounds编译错误如何解决

解决泛型类Complex的编译错误

错误原因

你传入构造方法的12121是Integer类型的字面量,但泛型类Complex的类型参数T、R被限定为BigDecimal的子类,而Integer并非BigDecimal的子类,类型不匹配导致编译器无法正确推断泛型参数,从而抛出错误。

解决方案

构造Complex实例时,必须传入BigDecimal类型的对象,而非Integer字面量。可以通过BigDecimal.valueOf()方法或者new BigDecimal()将整数转换为BigDecimal实例,修正后的调用代码如下:

Complex<BigDecimal,BigDecimal> s = new Complex<>(BigDecimal.valueOf(12121), BigDecimal.valueOf(12121));

补充说明

原Complex类的add方法中存在强制类型转换(T) (r.add(other.r)),这里需要注意:r.add()返回的是BigDecimal实例,如果T是BigDecimal的自定义子类,这个强制转换会导致运行时类型转换异常。如果仅使用BigDecimal本身作为泛型参数,这个转换是安全的。

内容的提问来源于stack exchange,提问作者Khaled Osama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:05:11