关于java基础--反射机制的详解

反射机制 1

1,运用发射必知 1

1,创建加载路径(Class文件的路径) 1

 2,加载路径获取class文件Class.forName(路径) 1

3,通过加载得到的Class变量可以实现的操作 2

(1)创建加载类的变量 2

(2)获取加载类的所有属性 2

(3)获取加载类的方法 2

(4)调用加载类的方法 2

(5)获取构造器 2

2,关于发射的方法解说   2

Class类 3

2-1返回加载类forName 3

2-2创建加载类实例对象newInstance 3

2-3获取加载类的属性getDeclaredFields 3

2-4获取加载类的方法体getMethod 3

2-4获取构造器getDeclaredConstructors() 3

其他用到的共有的方法:(Method类,Field类,) 4

Method类 4

1,调用方法invoke 4

2获取名字getName() 4

3获取返回参数的类型getReturnType() 4

Field类 4

1获取名字getName() 4

2,获取声明对象getType() 4

 

反射机制

1,运用反射必知

  1,创建加载路径(Class文件的路径)

  2,加载路径获取class文件Class.forName(路径)

      有效的路径的三种方法:

(1)想要加载的类变量. getClass()   --->new Student().getClass();

(2)类.class  ---->Student.class;

(3)Class.forName(路径)

  3,通过加载得到的Class变量可以实现的操作

(1)创建加载类的变量

Object s = c.newInstance();

(2)获取加载类的所有属性

Field[] field = c.getDeclaredFields();

Field f = field[i];

//获取属性的名称

String name = f.getName();

//获取属性的类型

Class type = f.getType();

(3)获取加载类的方法

第一种获取方法名的方法

String sName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);

Method sm = c.getMethod(方法名, 参数类型);

第二种获取

Method[] ms = c.getDeclaredMethods();

Method m = ms[i];

//获得方法体名称

String mName = m.getName();

//获得返回值的类型

Class mtype = m.getReturnType();

//获取该方法体的所有参数的类型 没有参数的为空

Class[] params = m.getParameterTypes();

(4)调用加载类的方法

sm.invoke(加载类对象, 属性值);

(5)获取构造器

//获取所有声明的

Constructor[] sts1 = c.getDeclaredConstructors();

//获取公共的

Constructor[] sts2 = c.getConstructors();

//构造器名称

String ctName = ct.getName();

//构造器的所有的参数的类型,没有的为空

Class[] ctpts = ct.getParameterTypes();

2,关于发射的方法解说  

Class类

2-1返回加载类forName

forName(路径):返回与带有给定字符串名的类或接口相关联的 Class 对象。]

2-2创建加载类实例对象newInstance

newInstance():创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的 new 表达式实例化该类。如果该类尚未初始化,则初始化这个类。

2-3获取加载类的属性getDeclaredFields

getDeclaredFields():返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。

getDeclaredField():返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。

getField():返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。

getFields():返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。

2-4获取加载类的方法体getMethod

getMethod(方法体名name,参数类型parameterTypes):返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。

name 参数是一个 String,用于指定所需方法的简称。

parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组。如果 parameterTypes 为 null,则按空数组处理。

2-4获取构造器getDeclaredConstructors()

getConstructor():返回一个 Constructor 对象,它反映此 Class 对象所表示的类的指定公共构造方法。

getDeclaredConstructors():返回 Constructor 对象的一个数组,这些对象反映此 Class 对象表示的类声明的所有构造方法。它们是公共、保护、默认(包)访问和私有构造方法。返回数组中的元素没有排序,也没有任何特定的顺序。

如果该类存在一个默认构造方法,则它包含在返回的数组中。

如果此 Class 对象表示一个接口、一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。

getDeclaredConstructor(parameterTypes):返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。

parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。

 

其他用到的共有的方法:(Method类,Field类,)

Method类

1,调用方法invoke

invoke(对象,参数):对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。

2获取名字getName()

getName():以 String 形式返回此 Method 对象表示的方法名称。

3获取返回参数的类型getReturnType()

getReturnType():返回一个 Class 对象,该对象描述了此 Method 对象所表示的方法的正式返回类型。

Field类

1获取名字getName()

getName():以 String 形式返回此 Method 对象表示的方法名称。

2,获取声明对象getType()

getType():返回一个 Class 对象,它标识了此 Field 对象所表示字段的声明类型。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值