初识java反射之问题

1.同一个类的2个对象,class对象是否相等?

		Class<FunctionImport1Cat> aClass01 = FunctionImport1Cat.class;
		Class<?> aClass02 = Class.forName("com.example.mxjc.java8.base.domain.FunctionImport1Cat");
		//是否相等?
		System.out.println(aClass01==aClass02);

解答:new出2个地址不同的FunctionImport1Cat,由对象点出的class对象比较是一样,因此相等

2.获取class对象的3种方式

		//获取class对象的3种方式
		//1.通过类.class
		Class<FunctionImport1> functionImport1Class = FunctionImport1.class;
		//2.通过class。forname()获取class
		Class<?> aClass = Class.forName("com.example.mxjc.java8.base.domain.FunctionImport1Cat");
		//3.通过对象获取class
		FunctionImport1Cat functionImport1Cat = new FunctionImport1Cat();
		Class<? extends FunctionImport1Cat> aClass1 = functionImport1Cat.getClass();

通过反射获取对象

		//无参构造函数
		Class<?> aClass = Class.forName("com.example.mxjc.java8.base.domain.FunctionImport1Cat");
		FunctionImport1Cat cat = (FunctionImport1Cat) aClass.newInstance();
		System.out.println(cat);

		//有参构造函数
		Constructor<?> constructorCat2 = aClass.getDeclaredConstructor(String.class);
		FunctionImport1Cat cat2 = (FunctionImport1Cat) constructorCat2.newInstance("你好");
		System.out.println(cat2);

getFields、getMethods、getCostructors 与getDeclatedFields、getDeclatedMethods、getDeclaredConstructors区别

解答:getFields、getMethods、getCostructors 获取类与超类中public权限内容(字段、方法),
getDeclatedMethods、getDeclaredConstructors获取类全部权限内容(字段、方法)

为反射对象设置值

		//为反射对象设置值
		FunctionImport1Cat cat4 = (FunctionImport1Cat) aClass.newInstance();
		Field food = aClass.getDeclaredField("food");
		//private权限需要设置访问权限
		food.setAccessible(true);
		food.set(cat4,"daka");
		System.out.println(cat4.getFood());

执行反射对象方法

		//通过反射执行方法
		System.out.println("execute reflex method");
		Method show = aClass.getDeclaredMethod("show", String.class, String.class);
		show.setAccessible(true);
		String shows = (String) show.invoke(cat4, "aa","bb");
		System.out.println(shows);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值