在工作中,一般是实体类对应的数据库表,另外再定义一个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;
} 

java 用户自定义的父类转换成子类的方法相关推荐

  1. java 父类转换成子类的方法

    /* 父类转换成子类的特点: 1:父类转换成子类不能自动完成 2:父类转换成子类的前提是父类的真身是这个子类 3:如果这个父类的真身是子类B,不能强制转换成子类A,只能转换成B. */ class T ...

  2. 父类转换成子类, 或者是类之间属性拷贝

    问题很怪, 其实本不应该这么做的, 将父类转换成子类本就是不安全的行为. 但哪有事事顺心的, 真遇到了还是得解决. /*** 父类*/ class Foo {private String name; ...

  3. java父类转换成子类_【转】java 父类与子类的转换

    最近同事调的一个服务报错,查看后是日期之间转换出的问题.代码里是把 java.sql.Date 类型的对象 强制转换为 java.sql.Timestamp 类型的对象.报java.lang.Clas ...

  4. C# 里氏转换(父类转换成子类)( is as )

    里氏转换: 1.子类可以赋值给父类 2.如果父类中装的是子类对象,则可以将这个父类转换为对应的子类对象 ---->关键字 1.is:返回bool类型,指示是否可以做这个转换 2.as:如果转换成 ...

  5. java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法

    学习Java的小伙伴们有时候可能会碰到这么一些烦恼,写日期的时候代码一直报错,原因就是日期一直写的是字符串,在项目里就不能写成字符串了,必须把字符串类型转成日期类型,那Java中如何将字符串Strin ...

  6. java 父类转子类失败_父类不能转换成子类

    父类不能转换成子类 Exception in thread "main"java.lang.ClassCastException: Person cannot be cast to ...

  7. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

  8. java 子类 父类 转换_Java子类与父类之间的类型转换

    1.向上转换 父类的引用变量指向子类变量时,子类对象向父类对象向上转换.从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制. 2.向下转换 在父类变 ...

  9. C#里氏转换,子类赋值父类,父类强制转换成子类的理解

    C#里氏转换,子类赋值父类,父类强制转换成子类的理解 最近在学习C#,在父类和子类的学习上有不理解的地方. Father f = new Son(); 这样的一个实例化程序中,内存时怎么样处理的,为什 ...

最新文章

  1. leetcode307. Range Sum Query - Mutable
  2. 关于Integer.MAX_VALUE + 1 = Integer.MIN_VALUE 问题
  3. POJ - 2893 M × N Puzzle(n*m数码问题+逆序对结论)
  4. ASP.NET MVC 4 过滤器(Authorize)
  5. python生成矩阵_如何在Python中生成矩阵?
  6. 小程序FMP优化实录,大厂面试题汇总
  7. IIS 部署asp.net Core程序注意事项
  8. 数据结构实验之图论九:最小生成树_初高中数学竞赛训练----图论初步2
  9. 计算机应用基础的题库,统考计算机应用基础题库
  10. 西双版纳真的适合养老吗?
  11. 命令行运行postman
  12. Softmax Derivation
  13. php 正则匹配 文件,php – 正则表达式匹配.htaccess中的一系列文件类型
  14. Js中的window.parent ,window.top,window.self 代表的对象
  15. C语言malloc函数
  16. ubuntu18.04 端口转发工具 Rinetd
  17. 微信快速引流的18种加人方法秘籍
  18. 廉颇老矣?尚能饭否?64岁的Python之父被微软录取!
  19. 2020 第一周工作总结:TAGE分支预测器算法
  20. 小米路由 php 服务器地址,小米路由器ip地址能改吗 小米路由器ip地址修改-192路由网...

热门文章

  1. 我的产品经理入门之路
  2. Innotop简单介绍
  3. OTRS安装ITSM组件
  4. Docker 企业级实战青铜段位-崔健敏-专题视频课程
  5. 加密算法---RSA 非对称加密原理及使用
  6. 刷爆朋友圈!前百度总裁陆奇最新AI重磅演讲:我的大模型世界观
  7. 《微波原理与技术》学习笔记11波导理论-同轴线、带状线、微带线
  8. 16 NLP 走近自然语言处理
  9. Java SaaS高可用集群架构与微服务架构分析
  10. 武大计算机考研分数线2021,武汉大学2021考研分数线-武汉大学考研分数线是多少...