java的反射机制

0.反射的概念

     反射是应用与框架的基石

1.反射是什么?

反射就是将类的class文件加载到内存中,并解析文件里面的数据。
它是一门技术,它包含一套API(反射API)。
   Class文件里有哪些重要数据呢?
成员变量,构造方法,一般方法,包等信息。  
   通过反射技术能干什么?
创建类的对象,操作对象的属性和调用方法。
   谁使用了反射?
所有的框架:Struts, Spring, Hernate等
所有web应用:web.xml

2.反射技术快速入门

反射API中包含下面一些类:
Class, Field, Constructor, Method等
它们在java.lang.reflect包下(Class在java.lang包下)
使用反射实现下面的业务功能:
我手头上有两个类,一个Student类,一个是Teacher类,我需要创建其中某个类的对象干活,但到底创建哪个类的对象,不由我自己决定,而由另一个人通过QQ发信息告诉我。
问题:
1 他发什么数据给我
2 我拿到数据后该怎么做

       反射类(Class,Field, Construtor, Method)是如何设计出来的呢?

3.源码示例

    之前不妨先看一张图来加深了解

     

     person类

public class Person{
	private String name;
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public void say(){
		System.out.println("I can say something...");
	}
}

import java.lang.reflect.Constructor;

public class ReflactTest {
	public static void main(String[] args) throws Exception {
		//给一个全类名,就可以用发射创建对象
		String classId="com.test.Person";
		//加载全类名获得对应的Class对象
		Class clazz=Class.forName(classId);
		//得到加载类的无参构造器
		Constructor constructor=clazz.getConstructor();		
		//通过获取的构造器对象创建类的对象
		Object obj=constructor.newInstance();
		
		System.out.println(obj);
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值