获取属性
- getField(fieldName)
根据字段名获取某个public的field(包括父类) - getDeclaredField(fieldName)
根据字段名获取当前类的某个field(不包括父类) - getFields()
获取所有 public 的 field属性 - getDeclaredFields()
获取当前类的所有field (不包含父类)
Field 常见的方法
- getName() : 获取属性名
- getType() : 获取属性类型
- getModifiers() : 返回修饰符、int 类型
- set(obj , val) : 设置 属性值
- get(obj) : 获取属性值
- setAccessible(true) : 允许访问私有属性
Modifier 处理getModifiers() 返回值
isPublic(int)
isPrivate(int)
isProtected(int)
isStatic(int)
isFinal(int)
// 通过反射,获取类中的属性
Class<Goods> clz = Goods.class ;
// 获取 类中所有声明的属性
Field[] declaredFields = clz.getDeclaredFields();
// 构建一个 Goods 对象
Goods goods = clz.getDeclaredConstructor().newInstance();
goods.setGoodsName("笔记本");
goods.setGoodsPrice(new BigDecimal("500"));
for(Field field : declaredFields) {
// 破坏 封装,允许封装没有权限的 属性
//field.setAccessible(true);
// 获取 属性名
System.out.println(field.getName());
// 获取 属性的 修饰符
System.out.println(field.getModifiers());
//System.out.println(Modifier.isPrivate(field.getModifiers()));
//System.out.println(field.getType());
// // 修改属性值, 将 录入时间设置为 当前系统时间
// if ("createTime".equals(field.getName())) {
// field.set(goods, new Date());
// }
//
//
// // 获取属性的属性值
// Object o = field.get(goods);
// System.out.println(o);
}
// 获取 商品类中 商品描述属性
// Field goodsDescField = clz.getDeclaredField("goodsDesc");
//
// goodsDescField.setAccessible(true);
// goodsDescField.set(goods, "下v成本和封面和别的方面获得丰厚");
//
// System.out.println(goods.getGoodsDesc());
获取方法
- getMethod(methodName, …paramterType)
根据方法名、获取所有 public 方法 (包含父类) - getDeclaredMethod(methodName, …paramterType)
根据方法名获取当前类的某个method(不包括父类) - getMethods()
获取所有 public 方法 - getDeclaredMethod()
Method常见的方法
- getName() : 获取方法名
- getModifiers() : 获取修饰符
- getParameterTypes(): 获取参数类型数组
- getParameterCount() : 获取参数个数
- getReturnType() : 获取返回类型
- invoke(obj , …parameters) :调用方法
- setAccessible(true) : 允许访问私有属性