通过反射执行对象的get方法,避免强制类型转换

代码如下
通过反射执行对象的get方法,

public static <T> T invokeGetMethod(Object obj, String fieldName) {
  Class<? extends Object> clazz = obj.getClass();
  PropertyDescriptor pd = null;
  try {
    pd = new PropertyDescriptor(fieldName, clazz);
  } catch (IntrospectionException e) {
    log.error("执行new PropertyDescriptor(fieldName, clazz)出现错误");
    e.printStackTrace();
  }
  Method readMethod = pd.getReadMethod();
  if (readMethod != null) {
    Object invoke = null;
    try {
      invoke = readMethod.invoke(obj);
    } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
      e.printStackTrace();
    }
    return (T) invoke;
  } else {
    return null;
  }
}

在代码

return (T) invoke;

有一个转换警告,内容如下

Type safety: Unchecked cast from Object to T

是类型转换的警告,如何修改代码修复这个警告,不是屏蔽,是修复

阅读 2.5k
1 个回答

试一下用instanceof判断后,再强转把。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏