栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

反射Java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

反射Java

什么是反射:反射是获取类信息的能力,能够分析类信息

一、反射的工作生命周期

1.java源文件 由javac编译成java.class字节码文件

2. 再加载到方法区中

3.由方法区在堆中创建对象

4.卸载

二、如何获取class对象

1..Class.forName("全类名"):将字节码文件加载进内存,返回class对象

(多用于配置文件,将类名定义在配置文件当中,读取文件,加载类)

2.类名.class: 通过类名的class获取

(多用于参数的传递)

3.对象.getClass() :getClass()方法在object类当中定义着

(多用于对象获取字节码的方式)

三、获取Field成员变量

1.Field[ ] getFields()获取所有public修饰的成员变量(用Field[ ]数组接收)

2.Field getField() 获取某一个公有的变量

3.Field [ ] getDeclaredFields():获取所有的成员变量,不考虑修饰符

4.Field getDeclaredField( ) 获取某一个变量,不考虑修饰符

忽略访问权限修饰符的安全检查

d.setAccessible(true);//暴力反射

四、Constructor访问构造方法

因为构造器的方法名称是相同的,不同的是参数列表,所以我们根据不同的参数列表来找到构造器

//因为构造器的方法名称是相同的,不同的是参数列表,所以我们可以根据不同的参数列表来找到构造器
		Constructor constructor = personClass.getConstructor(String.class,int.class);
		System.out.println(constructor);
		//创建对象
		Object perObject = constructor.newInstance("张三",20);
		System.out.println(perObject);
		
		System.out.println("-------------------------------");
	
		Constructor constructor1 = personClass.getConstructor();
		System.out.println(constructor1);
		//创建对象
		Object perObject1 = constructor1.newInstance();
		System.out.println(perObject1);
		
		System.out.println("-------------------------------");
		Object o = personClass.newInstance();
		System.out.println(o);
	}
五、Method:方法对象

1.获取指定名称的方法,方法无参

//获取指定名称的方法,方法无参
		Method eat_method = personClass.getMethod("eat");
		//执行方法
		Person person =new Person();
		eat_method.invoke(person);

2.获取指定名称的方法,方法有参

//获取指定名称的方法,方法有参
		Method eat_method1 = personClass.getMethod("eat",String.class);
		//执行方法
		eat_method1.invoke(person,"饭");

3.获取所有public修饰的方法

//获取所有public修饰的方法
		Method[] methods = personClass.getMethods();
		for (Method method : methods) {
			System.out.println(method);
			//获取方法的名称
			String name = method.getName();
			System.out.println(name);
		}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/362244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号