Java 父类 与子类之间的转换

2023-10-30

一、子类的实列化通过父类实现。(代码正常)

二、基于子类的实列化是通过父类实现,强制转换父类。(代码正常)

三、父类的实列化不能强制转换为子类。(代码错误,提示:java.lang.ClassCastException)

针对第三种情况,建议采用方案,将父类属性值全部拷贝至子类实列中。

 /**
     * 父类 属性值拷贝至 子类中
     * @param father
     * @param child
     * @throws Exception
     */
   
     public static <T>void fatherToChild(T father,T child) throws Exception {
        if (child.getClass().getSuperclass()!=father.getClass()){
            throw new Exception("child 不是 father 的子类");
        }
        Class<?> fatherClass = father.getClass();
        Field[] declaredFields = fatherClass.getDeclaredFields();
        for (int i = 0; i < declaredFields.length; i++) {
            Field field=declaredFields[i];
            Method method=fatherClass.getDeclaredMethod("get"+StringUtils.capitalize(field.getName()));
            Object obj = method.invoke(father);
            field.setAccessible(true);
            field.set(child,obj);
        }
    }

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 父类 与子类之间的转换 的相关文章

  • Java 终止嵌套for 循环总结

    public class NestedLoopDemo public static void main String args 第一步 构建嵌套for 循环 for int i 0 i lt 10 i for int j 0 j lt 10
  • Java 反射 与 主要API

    控制你的大脑 控制你的行为 你会得到更多 收获很多 文章目录 一 反射相关的主要API 二 代码例子演示 三 反射测试类 一 反射相关的主要API API 名称 代表含义 Java lang class 代表一个类 java lang re
  • (java基础知识)HashMap排序,Comparator接口详解

    对于List 可以调用Collections工具类的sort 方法 直接进行排序 HashMap 就没这么幸福了 其实 只要了解了Comparator这个接口之后 HashMap的排序也就不难了 无论是根据key 还是根据value排序 这
  • Java 父类 与子类之间的转换

    一 子类的实列化通过父类实现 代码正常 二 基于子类的实列化是通过父类实现 强制转换父类 代码正常 三 父类的实列化不能强制转换为子类 代码错误 提示 java lang ClassCastException 针对第三种情况 建议采用方案
  • java 清除字符串空格

    JAVA中去掉空格 1 String trim trim 是去掉首尾空格 2 str replace 去掉所有空格 包括首尾 中间 String str hell o String str2 str replaceAll System ou
  • Java线程:线程的同步-同步方法

    本文转载至 http lavasoft blog 51cto com 62575 221914 Java线程 线程的同步 同步方法 线程的同步是保证多线程安全访问竞争资源的一种手段 线程的同步是Java多线程编程的难点 往往开发者搞不清楚什
  • Java线程:线程的交互

    本文转载至 http lavasoft blog 51cto com 62575 99157 线程交互是比较复杂的问题 SCJP要求不很基础 给定一个场景 编写代码来恰当使用等待 通知和通知所有线程 一 线程交互的基础知识 SCJP所要求的
  • (java 功能篇)java 读取Propety配置文件

    java效果代码 源代码 package com rf test import java io IOException import java io InputStream import java util Properties publi
  • java 阻塞模式与非阻塞模式

    TCP IP 阻塞模式与非阻塞模式 java view plain copy print package concurrentTest import java io BufferedReader import java io IOExcep
  • Java线程:线程栈模型与线程的变量

    本文转载至 http lavasoft blog 51cto com 62575 99152 要理解线程调度的原理 以及线程执行过程 必须理解线程栈模型 线程栈是指某时刻时内存中线程调度的栈信息 当前调用的方法总是位于栈顶 线程栈的内容是随
  • Java线程:并发协作-死锁

    本文转载至 http lavasoft blog 51cto com 62575 222074 Java线程 并发协作 死锁 线程发生死锁可能性很小 即使看似可能发生死锁的代码 在运行时发生死锁的可能性也是小之又小 发生死锁的原因一般是两个
  • Java 生成随机数全数字方式

    生成9位随机数字 System out println int Math random 9 1 100000000 生成8位随机数字 System out println int Math random 9 1 10000000 生成6位随
  • (java 基础知识)java序列化和反序列话总结

    序列化 将java对象转换为字节序列的过程叫做序列化 反序列化 将字节对象转换为java对象的过程叫做反序列化 通常情况下 序列化有两种用途 1 把对象的字节序列永久的保存在硬盘中 2 在网络上传输对象的字节序列 相应的API java i
  • Java线程:线程的调度-守护线程

    本文转载至 http lavasoft blog 51cto com 62575 221845 Java线程 线程的调度 守护线程 守护线程与普通线程写法上基本么啥区别 调用线程对象的方法setDaemon true 则可以将其设置为守护线
  • 代码质量保障第2讲:单元测试 - 浅谈单元测试

    代码质量保障第2讲 单元测试 浅谈单元测试 本文是代码质量保障第2讲 浅谈单元测试 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证 这是基础 所以围绕着单元测试 我从网上搜集和总结了相关的概念 以助你完善体系
  • (java 基础知识) Java 安全套接字--javax.net.ssl

    有关SSL的原理和介绍在网上已经有不少 对于Java下使用keytool生成证书 配置SSL通信的教程也非常多 但如果我们不能够亲自动手做一个SSL Sever和SSL Client 可能就永远也不能深入地理解Java环境下 SSL的通信是
  • (Java 基础知识) Java线程池

    ExecutorService 建立多线程的步骤 1 定义线程类 class Handler implements Runnable 2 建立ExecutorService线程池 ExecutorService executorServic
  • java并发包:重入锁与Condition条件

    本文转载至 http blog csdn net a910626 article details 51900941 重入锁 这里介绍一下synchronized wait notify方法的替代品 或者说是增强版 重入锁 重入锁是可以完全替
  • Java线程:线程的调度-休眠

    本文转载至 http lavasoft blog 51cto com 62575 221790 Java线程 线程的调度 休眠 Java线程调度是Java多线程的核心 只有良好的调度 才能充分发挥系统的性能 提高程序的执行效率 这里要明确的
  • java并发包:fork/join

    本文转载至 http blog csdn net a910626 article details 51900967 Fork Join框架是Java7提供了的一个用于并行执行任务的框架 是一个把大任务分割成若干个小任务 最终汇总每个小任务结

随机推荐

  • Oracle UTL_HTTP(收集汇总有用资料)

    From Oracle The UTL HTTP package makes Hypertext Transfer Protocol HTTP callouts from SQL and PL SQL You can use it to a
  • shell脚本中任意输入三个数,输出最大值

    Linux下用shell脚本任意输入三个数 输出最大值 bin bash read p 请输入第一个数 n1 read p 请输入第二个数 n2 read p 请输入第三个数 n3 max n1 if n2 gt max then max
  • 同态加密简介

    同态加密概述 基本概念 同态加密 Homomorphic Encryption HE 指将原始数据经过同态加密后 对密文进行特定的运算 得到的密文计算结果在进行同态解密后的得到的明文等价于原始明文数据直接进行相同计算所得到的数据结果 历史与
  • 快速加入Health Kit,一文了解审核流程

    HUAWEI Health Kit是为华为生态应用打造的基于华为帐号和用户授权的运动健康数据开放平台 在获取用户授权后 开发者可以使用Health Kit提供的开放能力获取运动健康数据 基于多种类型数据构建运动健康领域应用与服务 为用户打造
  • axios实现本地缓存

    import axios from axios 线上数据库 axios defaults baseURL XXXXXXXXXXXXX 测试数据库 axios defaults baseURL http 192 168 1 25 8080 a
  • QMap和std::map的遍历

    两种遍历方式都使用迭代器 1QMap使用Iterator key 和Iterator value 方法获取第一个或第二个元素的值 而std map使用Iterator gt first Iterator gt second 来获取第一个或第
  • 为什么把系统带宽定义为-3dB?

    原文来自公众号 工程师看海 为什么把系统带宽定义为 3dB 对于我们常说的电路带宽或系统带宽 指的是增益为 3dB时的频率点 为什么选 3dB呢 对于带宽我们可以粗暴的理解为 系统的有效频率范围小于 3dB时的频点 简单来说 比如一个系统
  • 微信小程序练手实战:前端+后端(Java)

    1 前言 现在微信小程序越来越火了 相信不少人都通过各种途径学习过微信小程序或者尝试开发 作者就是曾经由于兴趣了解开发过微信小程序 最终自己的毕业设计也是开发一个微信小程序 所以现在用这篇博客记录我之前开发的一些经验和一些心得吧 2 主要内
  • 【Unity】一键切换是否允许#if UNITY_EDITOR条件编译生效

    在项目中经常会条件编译的方式来让编译器环境和非编译器环境跑不同的代码 但这种方式会让非编译器环境的代码测试变得十分不方便 UNITY EDITOR也是Unity预定义的宏 不能直接在PlayerSettings里面增加或删除 if UNIT
  • github实现在线运行程序

    复制定时任务代码进来 name weixin on workflow dispatch schedule 代表国际标准时间4点0分 北京时间需要 8小时 代表北京时间中午12点运行 cron 30 23 jobs 将工作流程中运行的所有作业
  • Vue h5 调用微信扫码接口

    需求 调用微信扫码接口 然后获取扫码返回结果的url中的参数 携参跳转到其他页面 1 安装微信js sdk 通过yarn安装 yarn add weixin js sdk 通过npm安装 npm i weixin js sdk 2 引用 i
  • 150.逆波兰表达式求值

    目录 一 题目 二 分析 代码 三 中缀表达式转后缀表达式 一 题目 150 逆波兰表达式求值 力扣 LeetCode 二 分析 代码 class Solution public int evalRPN vector
  • python机器学习手写算法系列——线性回归

    本系列另一篇文章 决策树 https blog csdn net juwikuang article details 89333344 本文源代码 https github com juwikuang machine learning st
  • html5和Css3 的参考手册(中文chm版)

    html5的其实就是利用w3c的在线版做成的chm 只是希望对没网络的朋友一点帮助 哈哈 我就是那样有时不能上网的 包含了HTML 5 中的一些新特性 嵌入音频 视频 图片的函数 客户端数据存储 以及交互式文档 其他特性包括新的页面元素 比
  • Maven的安装以及环境变量的配置

    一 Maven的下载 官网下载地址 官网下载地址 历史版本下载地址 历史版本下载地址 点击archives 找到3 6 3版本 找到存放二进制文件的文件夹 下载 二 环境变量配置 1 设置MAVEN HOME 变量名 MAVEN HOME
  • javassist动态生成class

    什么是javassist Javassist是一个开源的分析 编辑和创建Java字节码的类库 是由东京工业大学的数学和计算机科学系的 Shigeru Chiba 千叶 滋 所创建的 它已加入了开放源代码JBoss应用服务器项目 通过使用Ja
  • MySQL中的外键是什么、有什么作用

    近期自学数据库MySQL 然后有个疑问 一直不得其解 查询了相关资料 最后还是没有解决 我的疑问是 使用外键约束 然后我对 外键 这个词不是非常理解 查询相关资料都是讲一些术语 说外键的主要作用是 保持数据的一致性 完整性 听得我是一头雾水
  • 本原多项式/PRBS编码

    Pseudo Random Binary Sequence伪随机二进制序列 前言 PRBS N 其中N代表阶数 伪随机序列以2 N 1数据长度为周期 其他基础原理见百度或其他博主 在此不赘述 一 常用的本原多项式 PRBS3 X3 X2 1
  • python中的常见运算符

    文章目录 算数运算符 赋值运算 关系运算符 逻辑运算符 非布尔值的与或非运算 条件运算符 也叫三元运算符 运算符的优先级 算数运算符 加法运算符 如果两个字符串之间进行加法运算 则会进行拼串操作 减法运算符 乘法运算符 如果将字符串和数字相
  • Java 父类 与子类之间的转换

    一 子类的实列化通过父类实现 代码正常 二 基于子类的实列化是通过父类实现 强制转换父类 代码正常 三 父类的实列化不能强制转换为子类 代码错误 提示 java lang ClassCastException 针对第三种情况 建议采用方案