Java的反射

	1.什么是反射?
		反射是框架设计的灵魂
		JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
		要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象
		反射就是把java类中的各种成分映射成一个个的Java对象
	2.什么时候使用反射?
		做基础框架的时候用,一般应用层很少,不过这种东西,基本现在很多开源的框架都已经给你封装好了,自己基本用不着写。
	3.反射案例:
		//创建一个实例对象类
			package com.test;

			import java.io.Serializable;
	
			public class Person implements Serializable{
				/**
				 * 
				 */
				private static final long serialVersionUID = 1L;
				private String name;//姓名
				private char sex;//性别
				private int weight;
				private int height;
				private String birth;
				
				public String getName() {
					return name;
				}
				public void setName(String name) {
					this.name = name;
				}
				public char getSex() {
					return sex;
				}
				public void setSex(char sex) {
					this.sex = sex;
				}
				public int getWeight() {
					return weight;
				}
				public void setWeight(int weight) {
					this.weight = weight;
				}
				public int getHeight() {
					return height;
				}
				public void setHeight(int height) {
					this.height = height;
				}
				public String getBirth() {
					return birth;
				}
				public void setBirth(String birth) {
					this.birth = birth;
				}
				public static long getSerialversionuid() {
					return serialVersionUID;
				}
			
				@Override
				public String toString() {
					return "Person [name=" + name + ", sex=" + sex + ", weight=" + weight + ", height=" + height + ", birth="
							+ birth + "]";
				}
			}
	//创建一个处理反射的类文件		
			//获取类的Class对象实例
			Class person1 = Class.forName("com.test.Person");
			//根据Class对象实例获取Constructor对象
			Constructor constructor = person1.getConstructor();
			//使用Constructor对象的newInstance方法获取反射类对象
			Object object = constructor.newInstance();
			//获取setName方法的Method对象,setName方法的参数类型为String
			Method setMethod = person1.getMethod("setName", String.class);
			//将参数值写入Method对象中
			Object setInvoke = setMethod.invoke(object, "李四");
			//获取Method对象中的getName方法
			Method getMethod = person1.getMethod("getName");
			//获取Method对象中getName方法的属性值
			Object getInvoke = getMethod.invoke(object);
			//输出得到的结果
			System.out.println(getInvoke);
			控制台的显示结果:
			李四
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值