1.首先创建实体类UserDto
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {
private String id;
private String userName;
private String age;
}
2.获取对象里的属性
private static void getFields(Object obj){
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field declaredField : declaredFields) {
System.out.println(JSON.toJSONString(declaredField.getName()));
}
}
3.获取对象里的方法
private static void getMethods(Object obj) throws InvocationTargetException, IllegalAccessException {
Method[] declaredMethods = obj.getClass().getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
System.out.println(JSON.toJSONString(declaredMethod.getName()));
if ("getId".equals(declaredMethod.getName())){
// 执行方法
Object result = declaredMethod.invoke(obj);
System.out.println(result);
}
}
}
4.调用方法执行
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
// 创建实体类
UserDto userDto = new UserDto("1","zhangsan","20");
// 对象向上转型
Object obj = userDto;
// 获取属性
getFields(obj);
log.info("-------------------------------------");
// 获取方法
getMethods(obj);
}
5.执行结果
| 结果 |
|---|
| "id" |
| "userName" |
| "age" |
| 17:35:51.839 [main] INFO com.longfor.aop.controller.LoggerController - ------------------------------------- |
| "getUserName" |
| "canEqual" |
| "setAge" |
| "getAge" |
| "setId" |
| "setUserName" |
| "equals" |
| "toString" |
| "hashCode" |
| "getId" |
| 1 |