java-反射

一、反射

1、概念:

  • 类加载:当JVM 第一次访问一个类时,这个类需要被加载到内存中;
类加载的时机:
	1、建对象时
	2、创建子类对象
	3、调静态方法
  • 反射概念:在程序运行过程中,通过反射可以使用该类中的——构造方法、属性及实例方法

二、获取构造方法、属性、方法

1、获得字节码文件;	即通过放射获取到类对象C
		Class c=Class.forName("package19z20反射.Worker");

2、构造方法
	2.1、所有公开构造方法的获取与单个公开构造方法的获取
		//所有公开的构造方法
		Constructor[]  cons1=c.getConstructors();
		//单个公开构造方法
		Constructor	 con3=c.getConstructor(String.class,int.class,double.class);
		//建对象 
		Object c3=con3.newInstance("张三",25,3229);
	2.2、所有构造方法的获取(含私有)
	    //所有构造方法——含私有
		Constructor[]  cons2=c.getDeclaredConstructors();
		//获取单个私有构造          
		Constructor	con1=c.getDeclaredConstructor();
		——con1.setAccessible(true);  //取消私有    
		Object c1=con1.newInstance();//新建对象
3、属性的获取
	3.1、公开属性
	    //获取公开的所有属性
		1Field[]  s1=c.getFields();
		2Field f2=c.getField("age");//获得公开属性
		   //—为c1设置属性
		   f2.set(c1, 20);
		   
	3.2、私有属性
	      Field[]  s2=c.getDeclaredFields();//获取所有的属性(含私有)
		  Field f1=c.getDeclaredField("name");//获得私有属性//为对象设置属性
 		  f1.setAccessible(true);
		  f1.set(c1,"张三" );为c1设置属性
		  
4、方法的获取
	4.1Class c=Class.forName("package19z20反射.Worker");
		Method[] m1=c.getMethods();//获取所有公开的方法
	4.2、获取单个方法(公开)
		Method m=c.getMethod("work");
		m.invoke(c2);//对c2掉,类中的方法
	4.3、获取所有的方法(含私有)
	     Method[] m2=c.getDeclaredMethods();
	4.4、获取单个私有的方法并设置属性
		Method m21=c.getDeclaredMethod("work",int.class);
		m21.setAccessible(true);
		m21.invoke(c2, 6);//对c2掉,类中的方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值