对反射的认知

反射其实是通过Class对象来调用类里面的方法(无参无返回,无参有返回,有参数无返回,有参数有返回)或者属性,反射还可以调用私有方法和私有属性。

反射的使用方法:

System.out.println("-----------------属性-----------------------");
		// 1.得到你的类的对象
		Class c = Class.forName("com.zking.entity.Person");
		Field f = c.getDeclaredField("pname");
		// 设置私有的属性能够被访问
		f.setAccessible(true);
		System.out.println(f);
		// 得到一个person对象 newInstance 产生一个新的实列 实列化对象
		Object person = c.newInstance();
		// 赋值
		f.set(person, "张三");
		// 取值
		f.get(person);
		System.out.println(f.get(person));

//获取所有属性

	// System.out.println("-----------------属性-----------------------");
		// Class c = Class.forName("com.zking.entity.Person");
		// Field[] fields = c.getDeclaredFields();
		// Object person = null;
		// for (Field f : fields) {
		// f.setAccessible(true);
		// person = c.newInstance();
		// if ("pid".contains(f.getName())) {
		// f.set(person, "M01");
		// } else if ("pname".contains(f.getName())) {
		// f.set(person, "张三");
		// } else if ("sex".contains(f.getName())) {
		// f.set(person, 18);
		// }
		// System.out.println(f.get(person));
		// }

  方法:(无参无返回,无参有返回,有参数无返回,有参数有返回)

	// 无参无返回
	public void m1() {
		System.out.println("无参无返回");
	}

	// 无参有返回
	public String m2() {
		return "m2";

	}

	// 有参数无返回
	public void m3(Integer index, String str, String str1) {
		System.out.println("有参数无返回");

	}

	// 有参数有返回
	public String m4(Integer index, String str, String str1) {
		return index + str + str1;
 
	// 方法
		System.out.println("-----------------方法-----------------------");
		Class c1 = Class.forName("com.zking.reflect.DemoPerson");
		Object obj = c1.newInstance();
		Method m1 = c1.getMethod("m1", null);
		m1.invoke(obj, null);
		Method m2 = c1.getMethod("m2", null);
		System.out.println(m2.invoke(obj, null));
		Method m3 = c1.getMethod("m3", Integer.class, String.class, String.class);
		m3.invoke(obj, null, null, null);
		Method m4 = c1.getMethod("m4", Integer.class, String.class, String.class);
		System.out.println(m4.invoke(obj, null, null, null));

 }
使用反射可以 增加程序的灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值