java 用户自定义的父类转换成子类的方法
来源:互联网 发布:淘宝店代理品牌怎么做 编辑:程序博客网 时间:2024/06/06 03:20
在工作中,一般是实体类对应的数据库表,另外再定义一个Model继承实体类,在model里往往添加一些辅助的属性。我们从数据库查出的数据放在实体类里,但是展现数据时需要用到model类,这时就需要把实体类转换成Model类。父类不可能强制转换成子类,所以写了一个通用的方法,适用于这种场景下的转换,代码如下:
/** * 通过public的 get set方法进行复制,适合用于父类转换成子类 * @param objSource * @param clazzSrc * @param clazzDes * @return * @throws InstantiationException * @throws IllegalAccessException * @throws IllegalArgumentException * @throws InvocationTargetException */ public static <T, K> T copyByMethod(K objSource,Class<K> clazzSrc,Class<T> clazzDes ) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { if(null == objSource) return null;//如果源对象为空,则直接返回null T objDes = clazzDes.newInstance(); return mergeByPublicMethod(objSource, objDes, clazzSrc, clazzDes); } public static <T, K> T mergeByPublicMethod(K objSource,T objDes,Class<K> clazzSrc,Class<T> clazzDes) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ if(null == objSource) return null;//如果源对象为空,则直接返回null //获取目标对象的所有属性 Method[] methodDeses = clazzDes.getMethods(); Map<String,Method> m = new HashMap<String, Method>(); // 循环遍历方法,获取set方法 for ( Method method : methodDeses ) { //如果不是set方法则跳过 if(!method.getName().startsWith("set")) continue; m.put(method.getName().substring(3), method); } // 获得源对象所有方法 Method[] sourceMethods = clazzSrc.getMethods(); // 循环遍方法 for ( Method method : sourceMethods ) { //如果是set方法则跳过 if(!method.getName().startsWith("get")) continue; //如果目标对象不存在该方法,则跳过 if(!m.containsKey(method.getName().substring(3))) continue; m.get(method.getName().substring(3)).invoke(objDes, method.invoke(objSource)); } return objDes; }
阅读全文
0 0
- java 用户自定义的父类转换成子类的方法
- Java子类与父类的转换
- java 父类与子类的转换
- Java子类与父类的转换
- java 子类重写父类的方法
- java 子类重写父类的方法
- java 子类重写父类的方法
- java 子类与父类的方法
- 父类和子类的相互转换及父类调用子类的方法
- Java子类与父类之间的对象转换
- Gson自定义转换器转换成不同的子类
- 继承 HttpURLConnection 的自定义子类转换
- Java 子类方法的父类方法相互调用
- Java 子类未重写的方法调用父类还是子类的问题
- 父类与子类的转换条件
- 父类与子类之间的转换
- 父类与子类之间的转换
- c++子类父类的转换关系
- org.xml.sax.SAXParseException;lineNumber: 9; columnNumber: 6;不允许有匹配 "[xX][mM][lL]"的处理指令目标。
- 如何理解OSI参考模型
- java中就JTable的用法
- 计划
- Java使用RSA加密解密及签名校验
- java 用户自定义的父类转换成子类的方法
- 程序员的四个境界
- Kali2.0 linux安装漏洞扫描工具Nessus
- 20170622使用VTK库画一个立方体
- C++,ini文件操作(包含类)
- Maven学习(一) 搭建Maven环境
- 从两个文件(各含50亿个url)中找出共同的url
- 从高考到程序员
- Windows+Sublime Text3配置Lua开发环境的图文详细步骤