映射与反射

                                                                                      映射与反射

   反射:对象或者对象的属性获得class类

   映射:class(类)到对象

package com.xing.main;

import java.lang.reflect.Field;

import com.xing.entity2.Student;

public class Test222 {
	public static void main(String[] args) {

		// 例如如下代码通过new来获得对象,也就是把类转换成对象为映射
		// 通过对像来获得class里面的属性也为映射
		// 总结 就是通过人民正常的思维转换的都为映射 逆过来的都为反射
		Student stu = new Student();
		stu.setId(111);
		stu.setName("qin");
		stu.setSex("男");
		// 反射为如下代码 通过stu对象把对象转换成类。
		// 或者通过类的属性找到类
		Class clz = stu.getClass();
		String name = clz.getName();
		Field[] fs = clz.getDeclaredFields(); // 获取stu的所有列
		try {
			Field ff = clz.getDeclaredField("id"); // 通过输入class里面有的属性找的对应的属性,仅限于class有的字段
			System.out.println("输出对应的" + ff.getName());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("获得类的地址:" + clz);
		System.out.println("把类的地址转化成String类型" + name);
		// 通过类也可以获得所有class的属性 其实如果通过对象获得就是映射
		for (Field fi : fs) {
			System.out.println(fi.getName());

		}

	}

}


该资源包含源代码 易看易懂 其实就是一发射机制 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统中。 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。可以看出,同一般的反射概念相比,计算机科学领域的反射不单单指反射本身,还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统)都希望使系统的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不一定采用了反射机制,开放性是反射系统的必要条件。一般来说,反射系统除了满足开放性条件外还必须满足原因连接(Causally-connected)。所谓原因连接是指对反射系统自描述的改变能够立即反映到系统底层的实际状态和行为上的情况,反之亦然。开放性和原因连接是反射系统的两大基本要素。13700863760 Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。但需注意的是:如果使用不当,反射的成本很高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值