Java通过反射给final对象赋值(代码库)
直接赋值会报错
Method threw 'java.lang.UnsupportedOperationException' exception.
给没有set方法的类如下赋值
public static void setFieldValue(Object obj, String fieldName, Object val) { if (isEmpty(obj) || isEmpty(fieldName)) return; Class superClass=obj.getClass(); List<Field> clazzs=new ArrayList<>(); while(superClass!=null){ clazzs.addAll(Arrays.asList(superClass.getDeclaredFields())); superClass=superClass.getSuperclass(); } try { for (Field f : clazzs) { if (f.getName().equals(fieldName)) { f.setAccessible(true); f.set(obj, val); return; } } } catch (IllegalArgumentException e) { logger.error("error", e); } catch (IllegalAccessException e) { logger.error("error", e); } } public static boolean isEmpty(String...strings){ if(strings==null||strings.length==0) return true; for(String s : strings){ if(!isEmpty(s)) return false; } return true; } public static boolean isEmpty(String str) { return str == null || str.trim().length() == 0; } public static boolean isEmpty(Collection<?> col) { return col == null || col.size() == 0; } public static boolean isEmpty(Map<?, ?> map) { return map == null || map.size() == 0; } public static boolean isEmpty(Object[] obj) { return obj == null || obj.length == 0; } public static boolean isEmpty(Object obj) { if (obj == null) return true; else if (obj instanceof String) { String str = (String) obj; return str.trim().length() == 0; } else if (obj instanceof Map) { Map<?, ?> map = (Map<?, ?>) obj; return map.size() == 0; } else if (obj instanceof Collection) { Collection<?> col = (Collection<?>) obj; return col.size() == 0; } else if (obj instanceof Dictionary) { Dictionary<?, ?> dic = (Dictionary<?, ?>) obj; return dic.size() == 0; } else if (obj instanceof Object[]) { Object[] objs = (Object[]) obj; return objs.length == 0; } return false; } public static boolean notEmpty(Object obj) { return !isEmpty(obj); }
把每一件简单的事情做好,就是不简单;把每一件平凡的事情做好,就是不平凡!相信自己,创造奇迹~~
分类:
01、JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
2017-04-26 Ubuntu终端Terminal常用快捷键
2017-04-26 MySQL中使用Like模糊查询太慢
2017-04-26 MySQL的Explain关键字查看是否使用索引