泛型强制转换报错 Unchecked cast: ‘java.lang.XXX‘ to ‘T‘

本文探讨了Java中如何通过Class.cast()替代强制类型转换,以消除编译警告,并强调了转换前检查数据类型的必要性,以防ClassCastException。

描述

在需要强制转换为泛型的时候,编辑器会提示警告

已经看到太多文章说忽略掉警告信息了,所以写了这篇文章
在这里插入图片描述
例如如下代码:

public <T extends Component> T getComponent(Entity e, Class<T> exampleClass)
{
    // 多余代码忽略
    T result = (T)store.get(e);
    return result;
}

解决方案

可以使用 Class.cast() 来替代强制转换

修改如下代码:

T result = (T)store.get(e);

修改成:

T result = exampleClass.cast(store.get(e));

Tips:
Class.cast() 转换失败会报 ClassCastException 异常,还是需要在强转之前对于数据类型进行判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值