java父类转子类报错?怎么办?如何父类转子类 原创 2021-01-21 15:01:23.0 阅读(4508)次 我们java程序员经常会用到子类继承父类,在开发过程中就会遇到子类转父类,父类转子类的问题。 子类转父类不会报错,但父类转子类强转是不会报错的,但运行后就报错了,代码如下: public class UserInfo { private String userName; public UserInfo() { } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } } public class Administrators extends UserInfo{ } public class ParentToSonTest { public static void main(String[] args) { UserInfo user = new UserInfo(); user.setUserName("小明"); Administrators admin = new Administrators(); admin = (Administrators)user; System.out.println(admin.getUserName()); } } 运行后错误如下: Exception in thread "main" java.lang.ClassCastException: com.mystudy.model.UserInfo cannot be cast to com.mystudy.model.Administrators at com.mystudy.study.basis.oop.ParentToSonTest.main(ParentToSonTest.java:20) 那怎么解决这个问题呢? 一种方式是使用Bean copy的方式 一种方式是使用Json转换的形式,不过这种太重,性能不好 我们推荐使用Bean copy的方式,代码如下: ```java import org.springframework.beans.BeanUtils; import com.mystudy.model.Administrators; import com.mystudy.model.UserInfo; public class ParentToSonTest { public static void main(String[] args) { UserInfo user = new UserInfo(); user.setUserName("小明"); Administrators admin = new Administrators(); BeanUtils.copyProperties(user, admin); System.out.println(admin.getUserName()); } } ``` 记得推荐使用spring提供的复制工具类,不要使用apache提供的,spring性能更快。 ##### 但还有一点,就是无论spring,还是apache提供的拷贝,都是浅拷贝,也就是说引用类型的属性是不会复制的,只是简单的引用,所以使用的时候注意对象的更新操作会有影响 java java基础 上一篇:CF由于网络原因连接服务器失败请重试 1033_10136 下一篇:mybatis一条语句实现一对一,一对多查询
相关文章 java下载图片(976) java List间计算并集、差集、交集以及去重(3832) java使用BufferedImage放大或缩小图片(4643) java Md5工具类获取字符串的Md5值(1265) maven修改jar包版本不生效解决办法(7124) 图片的base64字符转成BufferedImage(2665) java使用guava cache实现本地缓存(4854) java中BufferedImage转成 base64字符串(8224) java List数据内存分页(3084) java阻塞的线程安全的优先级队列PriorityBlockingQueue(1969) 推荐文章 使用spring4实现websocket连接(1) Parameter index out of range (1 > number of parameters, which is 0(7) spring cloud+feign+mybatis中使用seata0.9实现分布式事务(7) spring cloud gateway报错Only one connection receive subscriber allowed(82) spring cloud中Feign调用诡异报错MethodNotAllowed: status 405 reading(116) elasticsearch7.1保存时报错: Validation Failed: 1: type is missing;(7) 聊聊数据保存到MySQL后数据乱码的问题(1) jquery对象与dom对象互转(1) linux使用epel源yum安装iftop、nload、nginx等(2) linux下nginx安装其他模块(1) 热门文章 java stream去重的几种方式(40819) the dependencies of some of the beans in the application context form a cycle(16324) 解决mybatis打印查询结果集造成太多日志的问题(9839) java enum枚举转list和Map(9722) java stream List转Map与List转List与Map转List以及List转Map(8468) ServletRequest转HttpServletRequest设置header之后取不到header的问题(8434) java中BufferedImage转成 base64字符串(8098) 切分List集合为多个List集合(7385) maven修改jar包版本不生效解决办法(6990) bootstrap.yml配置报错:Could not resolve placeholder 'xx' in value (6949) 标签列表 java java java java java java java基础 微服务 异常处理 mysql clickhouse clickhouse clickhouse clickhouse clickhouse spring cloud spring boot linux elasticsearch feign jdbc spring js docker postgresql solr seata nginx maven gateway hsqldb 数据库 架构 大数据分析 分布式事务 redis canal dubbo hadoop 消息队列 win10 websocket springmvc git html select2 mybatis jenkins rocketmq quartz activemq 数据库集群 ajax bat 电脑 笔记 eclipse 设计模式 阿里云 github freemarker jvm jquery javamail redission redission对象 hystrix http hibernate springmail svn ubuntu ueditor xheditor zookeeper 分布式 小程序 开发工具 gitlab