Java反射编程

1.反射编程概述
java反射机制是指在程序运行时动态调用对象方法、访问对象属性的功能。使用反射会在很大程度上提高代码的灵活性,但是通过反射创建对象时性能要稍微低一些,在实际开发中,没有必要使用反射来访问已知类的方法和属性,只有当程序要动态创建某个类的对象的时候才会考虑使用。例如,从配置文件中读取以字符串形式表示的类时,就必须使用反射来获取它的方法和属性。
java反射编程时在编译时并不确定是哪个类被加载了,只有"运行以后"这个类才被加载、感知和使用。而非反射编程,代码编译之后,就可以确定是哪个java类了,程序启动之后代码运行之前,java类就已经被jvm加载了。
java反射机制能够知道类的基本结构,这种对java类结构探知的能力,称为java类的自审。Eclipse等IDE中代码的自动提示功能,就是利用了java反射的原理,是对所创建对象的探知和自审。
【java反射可以实现的功能】:
在运行时判断任意一个对象所属的类
在运行时构造任意一个类的对象
在运行时判断任意一个类所具有的方法和属性
在运行时调用任意一个对象的方法
【java反射常用API】
Class类、Field类、Method类、Constructor类
【使用反射的基本步骤】
导入java.lang.reflect.*
获得目标类的java.lang.Class对象
调用Class的方法获取Field、Method等类的对象
使用反射API进行操作
2.反射创建各种对象
在这里插入图片描述
3.Field对象的使用
在这里插入图片描述
4.Method对象的使用
在这里插入图片描述
5.类信息的获取

	    //1.创建类对应的Class对象
		Class cla=Student.class;
		
		//2.获取此类的包的Package对象
		Package pe=cla.getPackage();
		//2.1包名
		System.out.println(pe.getName());
		//2.2package 包名
		System.out.println(pe.toString());
		
		//3.1获取此类的类名全路径:包名.类名
		System.out.println(cla.getName());
		//3.2获取此类的类名简称:类名
		System.out.println(cla.getSimpleName());
		
		//4.获取类的父类对应的Class对象
		Class superClass=cla.getSuperclass();
		//4.1父类的类名全路径
		System.out.println(superClass.getName());
		
		//5.获取类实现的全部接口的Class对象
		Class[]allInterface=cla.getInterfaces();
		//5.1打印所有接口名
		for (Class class1 : allInterface) {
			System.out.println(class1.getName());
		}

6.数组的反射编程

    /**
	 * 使用java.lang.reflect.Array类动态创建和访问数组
	 * Array类的对象可以代表所有的数组
	 */
	public static void main(String[] args) {
		//1.动态创建一个数组
		//使用Array的newInstance(数组元素类型.class, 数组长度)方法
		//返回一个Object对象
		Object arr=Array.newInstance(String.class, 10);

		//2.为数组元素赋值
		//使用Array的set(Object array, int index, Object value)方法
		//为某个下标赋值
		Array.set(arr, 4, "d4");
		Array.set(arr, 5, "e5");

		//3.取出数组元素的值
		//使用Array的get(Object array, int index)方法
		//取出某个下标的值,返回Object对象
		String s4=(String) Array.get(arr,4);		
		String s5=(String) Array.get(arr,5);
		System.out.println(s4+" "+s5);
	
	}
  • 28
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值