回忆之反射笔记

获取class对象的三种方式

//Object类的getClass()方法
class c1  = 对象名.getClass();
//类的静态属性
Class c2 = 类名.class;
//class类的静态方法
Class c3 = Class.forName("类的正名");
正名:报名+类名

Student student = new Student();
		Class class1 = student.getClass();
		Class class2 = Student.class;
		Class class3 = Class.forName("reflect.Student");
		System.out.println(class1 == class2 );
		System.out.println(class1 == class3);

反射方式获取构造方法

1、获取对应类的字节码文件对象

2、根据字节码文件对象获取构造器对象

3、通过newInstance方法创建对象

Constructor<T> 构造器对象,属于java.base模块,java.lang.reflect包

getConstructor(class<?>...parameterTypes) 只会返回公共构造方法
getDeclaredConstructor(Class<?>...parameterTypes) 可获取私有构造方法
getConstructors()   返回此类(不含私有)构造方法的数组

常用方法
String getName() 返回构造方法名称
T newInstance(Object...initargs) 使用此构造方法和指定参数创建并初始化对象


Class class1  =Class.forName("reflect.Student");
		Constructor conl  = class1.getConstructor();
		System.out.println(conl);
		
		Constructor con2 = class1.getConstructor(String.class);
		System.out.println(con2.getName());
		Student student =(Student) con2.newInstance("尼古拉斯赵四");
		
		System.out.println(student);
		
		Constructor con3 = class1.getDeclaredConstructor(int.class);
		System.out.println(con3);
		
		System.out.println("============================");
		Constructor[] cons = class1.getConstructors();
		for (Constructor constructor : cons) {
			System.out.println(constructor);
		}

 

反射方法获取成员方法并使用

Method对象  方法对象,java.lang.reflect
通过Class 对象获取方法
getMethod(String name,Class<?>...parameterTypes) 返回一个Method对象,仅公共成员方法
                 name:方法名称  parameterTypes:方法的参数列表
getDeclaredMethod(String,Class<?>...)
                 返回一个Method对象,可获取私有成员方法
Method的常用方法
String getName() 返回方法名称
Object invoke(Object obj,Object...args) 在指定对象上调用此方法,参数为args


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值