反射总结

知识点总结

如何获取.Class文件对象

1, 通过Object类 getClass()方法获取 Class对象 

2, 通过类名.class 方式 获取 Class对象

3, 通过反射的方式, Class.forName(String classname) 获取Class对象

public static Class<?> forName(String className)throws ClassNotFoundException

返回与带有给定字符串名的类或接口相关联的 Class 对象

 

通过反射, 获取类中的构造方法,并完成对象的创建

获取指定的构造方法

public Constructor<T> getConstructor(Class<?>... parameterTypes)

获取指定的public修饰的构造方法 

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

获取指定的构造方法,包含私有的

获取所有的构造方法

public Constructor<?>[] getConstructors() 获取所有的public 修饰的构造方法

public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法,包含私有的

 

通过反射, 获取类中的构造方法,并完成对象的创建

步骤:

1,获取字节码文件对象

2,通过字节码文件对象 ,获取到指定的构造方法

getConstructor(参数);

3,通过构造方法,创建对象

public T newInstance(Object... initargs)

 

私有构造方法,创建对象

1,获取字节码文件对象

2,通过字节码文件对象 ,获取到指定的构造方法

getDeclaredConstructor (参数);

3,暴力访问 

con.setAccessible(true);

4,通过构造方法,创建对象

public T newInstance(Object... initargs)

 

通过反射,获取Class文件中的方法

获取指定的方法

public Method getMethod(String name, Class<?>... parameterTypes)

获取指定的public方法

public Method getDeclaredMethod(String name, Class<?>... parameterTypes)

获取指定的任意方法,包含私有的

获取所有的方法

public Method[] getMethods() 获取本类与父类中所有public 修饰的方法

public Method[] getDeclaredMethods()获取本类中所有的方法,包含私有的

 

通过反射,调用方法

步骤:

1,获取Class对象

2,获取构造方法,创建对象

3,获取指定的public方法

4,执行方法    

public Object invoke(Object obj, Object... args)

 

私有方法的调用:

1,获取Class对象

2,获取构造方法,创建对象

3,获取指定的private方法

4,开启暴力访问

m5.setAccessible(true);

5,执行方法    

public Object invoke(Object obj, Object... args)

 

通过反射,获取成员变量(字段)

获取指定的成员变量

public Field getField(String name) 获取public修饰的成员变量

public Field getDeclaredField(String name) 获取任意的成员变量,包含私有

获取所有的成员变量

public Field[] getFields() 获取所有public修饰的成员变量

public Field[] getDeclaredFields() 获取司所有的成员变量,包含私有

 

通过反射,获取成员 变量,并赋值使用

步骤:

1,获取字节码文件对象

2,获取构造方法,创建对象

3,获取指定的成员变量

4,对成员变量赋值\获取值操作

public void set(Object obj,  Object value) 赋值

public Object get(Object obj) 获取值

 

私有成员变量的使用

步骤:

1,获取字节码文件对象

2,获取构造方法,创建对象

3,获取指定的成员变量

4,开启暴力访问

5,对成员变量赋值\获取值操作

public void set(Object obj,  Object value) 赋值

public Object get(Object obj) 获取值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值