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

描述

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

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

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 异常,还是需要在强转之前对于数据类型进行判断

猜你喜欢

转载自blog.csdn.net/assember/article/details/122319258