Java中反射学习系列教程四-常用API方法(二)

  • 作者: 凯哥Java
  • 反射
  • 时间:2019-06-25 23:02
  • 1033人已阅读
简介 本文是《Java中反射学习系列教程》中的第四篇文章。本文我们接着之前的讲解。先来看看今天学习主要内容:1:获取实例化对象的所有属性2:获取实例化对象的所有方法4.2.6获取对象中属性我们知道对象中的属性根据权限不同可以使用不同修饰符来修饰。这里我们就来研究public和private修饰的属性获取。GetFields:获取所有public属性GetDeclaredFields:获取所有属性。包含p

本文是《Java中反射学习系列教程》中的第四篇文章。本文我们接着之前的讲解。

先来看看今天学习主要内容:

1:获取实例化对象的所有属性

2:获取实例化对象的所有方法

4.2.6 获取对象中属性

我们知道对象中的属性根据权限不同可以使用不同修饰符来修饰。这里我们就来研究public和private修饰的属性获取。

GetFields:获取所有public属性

GetDeclaredFields:获取所有属性。包含private的

Demo示例代码:

/**
* 获取属性
* 1:pubic属性获取
* 2:所有属性获取
*/
@Test
public void getFieldTest() throws Exception{
Class<?> clazz1 = Class.forName("com.kaigejava.domain.Student");
//1:获取public的单个属性
Field addrField = clazz1.getField("addr");
log.info("获取public addr..");
//获取所有公开的属性
Field[] publicFieldS = clazz1.getFields();
for(int x = 0;x < publicFieldS.length;x++){
Field field = publicFieldS[x];
log.info("获取到所有pulibc的属性.当前获取第:{}个。属性名称为:{}",x,field.getName());
}
//获取单个属性(private)
Field privateSchooleName = clazz1.getDeclaredField("schoolName");
//获取所有属性 包含public private的
Field [] allField = clazz1.getDeclaredFields();
for(int x = 0;x < allField.length;x++){
Field field = allField[x];
log.info("获取到所有的属性.当前获取第:{}个。属性名称为:{}",x,field.getName());
}
}

查看student的属性:

运行结果:

4.2.7 获取对象中方法

方法和属性类似。都分为public和private的。所以:

获取public方法是:getMethod

获取所有方法(包含private的):getDeclaredMethod

这里咱们就只演示获取单个public方法:

Demo演示代码:

/**
* 获取方法
* @throws Exception
*/
@Test
public void getMethodTest()throws Exception{
Class<?> clazz1 = Class.forName("com.kaigejava.domain.Student");
Class<?> methodParams[] = new Class[]{String.class};
Method publicSetRealName = clazz1.getMethod("setRealName",methodParams);
log.info("方法名称为:{},方法参数为:{}",publicSetRealName.getName(),publicSetRealName.getGenericParameterTypes());
}

运行结果:

今日总结:


温馨提示:本文是系列教程中的一篇文章。


Top Top