《精通Spring4.X企业应用开发实战》读后感第四章(Java反射)
package com.smart.reflect;public class Car {private String brand;private String color;private int maxSpeed;//默认构造函数public Car(){}//带参构造函数public Car(String brand, String color, int maxSpeed) {this.brand = brand;this.color = color;this.maxSpeed = maxSpeed;}//未带参方法public void introduce() {System.out.println("brand:" + brand + ";color:" + color + ";maxSpeed:" + maxSpeed);}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getMaxSpeed() {return maxSpeed;}public void setMaxSpeed(int maxSpeed) {this.maxSpeed = maxSpeed;} }
package com.smart.reflect;import sun.reflect.CallerSensitive;import java.lang.reflect.Constructor; import java.lang.reflect.Method;public class ReflectTest {public static Car initByDefaultConst() throws Throwable {/*类装载器工作机制:(1)装载:查找和导入Class文件(2)链接:1.校验:检查载入Class文件数据的正确性2.准备:给类的静态变量分配存储空间3.解析:将符号引用转化为直接引用(可选)(3)初始化:对类的静态变量、静态代码块执行初始化工作*/// 1. 通过类加载器获取Car类对象ClassLoader loader = Thread.currentThread().getContextClassLoader();Class clazz = loader.loadClass("com.smart.reflect.Car");// 2. 获取类的默认构造器对象并通过它实例化CarConstructor constructor = clazz.getConstructor((Class[]) null);Car car = (Car) constructor.newInstance();// 3. 通过反射方法设置属性Method setBrand = clazz.getMethod("setBrand", String.class);setBrand.invoke(car, "红旗CA72");Method setColor = clazz.getMethod("setColor", String.class);setColor.invoke(car, "黑色");Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);setMaxSpeed.invoke(car, 200);return car;}public static void main(String[] args) throws Throwable {Car car = initByDefaultConst();car.introduce();//JVM装载类时使用“全盘负责委托机制”// 1.当一个ClassLoader装载一个类时,除非显式的使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入// 2.先委托父类装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类 } }
转载于:https://www.cnblogs.com/Michael2397/p/7929607.html
《精通Spring4.X企业应用开发实战》读后感第四章(Java反射)相关推荐
- 《精通Spring4.X企业应用开发实战》读后感第二章
一.配置Maven\tomcat https://www.cnblogs.com/Miracle-Maker/articles/6476687.html https://www.cnblogs.com ...
- 《精通Spring4.X企业应用开发实战》读后感第五章(注入参数详解)
转载于:https://www.cnblogs.com/Michael2397/p/7954596.html
- 《HBase企业应用开发实战》—— 第3章 数 据 模 型
本节书摘来自华章出版社<HBase企业应用开发实战>一 书中的第3章,第3.1节,作者:马延辉 孟鑫 李立松 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...
- 精通Spring_4.x__企业应用开发实战PDF分享
下载链接:http://www.fmpan.com/s/lxfpmio3
- Spring 3.x 企业应用开发实战(含CD光盘1张)
Spring 3.x 企业应用开发实战(含CD光盘1张) 陈雄华,林开雄著 ISBN 978-7-121-15213-9 2012年2月出版 定价:90.00元(含光盘1张) 16开 728页 宣传 ...
- Spring 3.x企业应用开发实战
Java技术大系 Spring 3.x企业应用开发实战 陈雄华 林开雄 著 Publishing House ofElectronics Industry 北京· BEIJING 内 ...
- 《HBase企业应用开发实战》—— 2.5 停止HBase集群
本节书摘来自华章出版社<HBase企业应用开发实战>一 书中的第2章,第2.5节,作者:马延辉 孟鑫 李立松 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...
- Lison《vue技术栈开发实战》(四)
Lison<vue技术栈开发实战>(四) 从SplitPane组件谈Vue中"操作"DOM 简单两列布局 如何让两个div改变宽度 鼠标拖动效果 v-model和.sy ...
- 李艺《微信小程序全栈开发实战》(第一章)
李艺<微信小程序全栈开发实战>(第一章) 双线程运行机制 小程序的特点及开发能力 小程序的特点 小程序的开发能力 开发小程序的一般流程 小程序的运行机制 小程序双线程 视图的持续更新是如何 ...
最新文章
- access mysql字段对应_ACCESS数据库中表与字段名称修改
- linux的网络命令整理 更新中
- java内置_自包含的应用程序,内置Java
- 保存图像_设计干货知识:SVG vs PNG vs JPG|图像格式的优缺点
- Bash Cookbook 学习笔记 【高级】
- 局部特征(3)——SURF特征总结
- centos5.4 安装配置oracle10g
- redis 数据类型、命令
- Windows进程与线程学习笔记(二)—— 线程结构体
- mysql5.5 datetime默认值不能为NOW或者CURRENT_TIMESTAMP
- CentOS7.5 使用二进制程序部署Kubernetes1.12.2(三)
- C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】
- sqlserver中常用的几个存储过程
- 探索流程的奥秘之三, 如何梳理业务流程
- AI 落地谁最强?AI Top 30+案例评选等你来秀
- 零基础学python图文版-零基础学Python(图文版)
- 生成一定数量的不重复随机数
- 如何下载矢量二维电子地图数据
- python新建画布_Python tkinter Canvas画布完全攻略-Python
- 初探机器学习之使用讯飞TTS服务实现在线语音合成
热门文章
- 二十二 Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别...
- 纯野今日之最:面试谈
- 实现OO的最后一公里
- Add-in and Automation Development In VB.NET 2003 (8)
- 5个元素排序java_Android-java-如何按对象内的某个值对对象列表进行排序
- java pc 蓝牙_Nokia PC 套件与蓝牙适配器连接教程(转)--个人推荐
- 理解云原生--开发模型、架构原则、主要技术
- Intel Pin架构
- oracle创建目录并赋权,Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法...
- php头像上传思路,PHP头像上传,php头像上传_PHP教程