浅析java反射
来源:互联网 发布:合肥seo 编辑:程序博客网 时间:2024/05/21 15:44
什么是java反射?
主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!
那么使用java反射机制的作用:
1反编译:.class–>.java
2通过反射机制访问java对象的属性,方法,构造方法等;
package com.cxg.demo.test;import java.lang.reflect.Constructor;import java.lang.reflect.Method;/** * Title: java反射测试 * Description: TestDemo * @author lu * @date 2016年7月4日 上午11:53:02 */public class reflect { public static Car initByDefaultConst() throws Throwable { //1.通过类装载器获取Car类对象 ClassLoader loader = Thread.currentThread().getContextClassLoader(); Class<?> clazz = loader.loadClass("com.cxg.demo.test.Car"); //2.获取类的默认构造器对象并通过它实例化Car Constructor<?> cons = clazz.getConstructor((Class[])null); Car car = (Car) cons.newInstance(); //3.通过反射方法设置属性 Method setBrand = clazz.getMethod("setBrand",String.class); setBrand.invoke(car,"奥迪A6"); 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(); }}
实体类代码:
package com.cxg.demo.test;/** * Title: 实体类 * Description: TestDemo * @author lu * @date 2016年7月4日 下午1:43:16 */public class Car { private String brand; private String color; private int maxSpeed; //无参构造方法 public Car() { super(); } //有参构造函数 public Car(String brand, String color, int maxSpeed) { super(); this.brand = brand; this.color = color; this.maxSpeed = maxSpeed; } //get和set方法 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; } public void introduce() { System.out.println("car introduce==>"+brand+";"+color+";"+maxSpeed); }}
0 0
- 浅析Java反射机制
- java 反射知识浅析
- Java 反射机制浅析
- Java 反射机制浅析
- Java 反射机制浅析
- Java 反射机制浅析
- Java 反射机制浅析
- 浅析java反射机制
- Java反射机制浅析
- java反射机制浅析
- Java 反射机制浅析
- Java反射机制浅析
- java 反射浅析
- Java 反射机制浅析
- java反射机制浅析
- Java反射机制浅析
- Java 反射机制浅析
- Java 反射机制浅析
- 求n个骰子各点数和出现的概率-动态规划
- String的compareTo方法底层代码
- RT-thread内核之定时器管理
- 判断是否微信打开实现跳转
- mac os 安装git 教程
- 浅析java反射
- LeetCode 349. Intersection of Two Arrays && 350. Intersection of Two Arrays II
- linq
- 三种增长模式
- URL中编码URL特殊字符
- Python Socket 编程,OSError: [Errno 98] Address already in use
- RT-thread内核之系统时钟
- iOS webview 加载html 乱码 需要UTF8转码
- Hive 或 Impala 的数据类型与 对应底层的 Parquet schema的数据类型不兼容