java: 不兼容的类型: 推论变量T具有不兼容的限制范围 等式约束条件: T 下限: java.lang.Object

在Java开发中,遇到一个关于泛型T的错误,当尝试将null强转为Object并传递给接受泛型T的方法时,导致类型不兼容。问题在于,这样做会使方法返回的T变成Object,而调用方法期望的是T类型,因此无法转换。解决方案是删除强转,直接传入null。错误分析揭示了泛型的限制和类型转换的规则。
摘要由CSDN通过智能技术生成

前言

开发中遇到一个比较生僻的关于泛型T的问题。
想要利用泛型封装一下统一返回实体时报错
记录学习一下。


java: 不兼容的类型: 推论变量T具有不兼容的限制范围 等式约束条件: T 下限: java.lang.Object

1 报错代码

演示代码


    public static <T> ResultBean<T> paramError(String message, T data) {
        return new ResultBean(false, message, "paramError", data);
    }

    public static <T> ResultBean<T> paramError(String message) {
        return paramError(message, (Object)null);
    }

在这里插入图片描述

2 报错信息

项目启动报错

演示代码

java: 不兼容的类型: 推论变量T具有不兼容的限制范围
    等式约束条件: T
    下限: java.lang.Object

在这里插入图片描述

3 解决办法

删除参数里面的将null强转化为object

演示代码

    public static <T> ResultBean<T> paramError(String message, T data) {
        return new ResultBean(false, message, "paramError", data);
    }

    public static <T> ResultBean<T> paramError(String message) {
        return paramError(message, null);
    }

在这里插入图片描述

4 错误分析

泛型T可以转化为任何类型,但是转化之后就不能再转化为泛型T

上述代码中,paramError(message, (Object)null); 将object转递进来之后,接收的方法public static ResultBean paramError(String message, T data) 中返回的T和接收的T都变成了Object。
被调方法返回的T变成Object之后,
调用方法 的返回类型是T,就要将object转化为T传递-》所以就没有办法返回了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑白极客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值