文章目录
- 简介
- Method类的方法
-
- String getName()得到方法名字
- Class<?> getReturnType() 得到返回值类型
- Class<?>[ ] get
- 练习
-
- 练习1: 写出获取Class对象的三种方式
- 练习2: 写出三种创建user对象的方式
- 练习3: 调用User对象的eat()方法的2种方式
- 练习4: 设置user对象的name属性的值的2种方法
- 练习5: 得到user对象的name属性的值的2种方法
- 练习6: 动态查找调用Java类中的方法
- 标准的JavaBean
- java的内省
-
- 概念
- 内省涉及到类和接口
-
- Introspector类
- 方法
- 内省确定属性名的方法
- 内省获取属性
- 用内省获取属性对应的getter和setter方法
- 内省属性的注意事项
- BeanUtils
简介
- 本文是2021/04/19整理的笔记
- 赘述可能有点多,还请各位朋友耐心阅读
- 本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进
Method类的方法
String getName()得到方法名字
Class<?> getReturnType() 得到返回值类型
Class<?>[ ] get
invoke方法的返回值就是调用的方法的返回值
练习
练习1: 写出获取Class对象的三种方式
-
Source源代码阶段
Class.forName()
-
Class类对象阶段
类名.Class
-
Runtime运行时阶段
对象名.getClass
练习2: 写出三种创建user对象的方式
new直接创建
newInstance
constructor
练习3: 调用User对象的eat()方法的2种方式
public class Test{
public static void main(String[] args) throws
NoSuchMethodException, IllegalAccessException,
InstantiationException, InvocationTargetException {
//第一种调用方法
User user1 = new User();
user1.eat();
//第二种调用方法
User user2 = User.class.newInstance();
Method method = User.class.getMethod("eat");
Object o = method.invoke(user2);
System.out.println("o = " + o);
}
}
练习4: 设置user对象的name属性的值的2种方法
//设置student对象的name属性的值的2种方法
public class Test{
public static void main(String[] args) throws
IllegalAccessException, InstantiationException, NoSuchFieldException {
//第一种
User user1 = User.class.newInstance();
user1.setName("张三");
//第二种
User user2 = new User();
Field name = User.class.getDeclaredField("name");
name.setAccessible(true);
name.set(user2,"李四");
}
}
练习5: 得到user对象的name属性的值的2种方法
练习6: 动态查找调用Java类中的方法
标准的JavaBean
三个特征:
属性都是私有的
无参public构造
公有的getXXX以及setXXX方法。
java的内省
概念
内省(Inspector)机制就是基于反射的基础,Java 语言对 Bean 类属性、事件的一种缺省处
理方法.
内省涉及到类和接口
与Java内省有关的主要类与接口:
- 类:
- java.beans.Introspector类:为获得JavaBean属性、事件、方法提供了标准方法;通常使用其中的getBeanInfo方法返回BeanInfo对象
- java.beans.PropertyDescriptor类:用来描述一个属性,该属性有Getter和Setter方法。
- 接口:
- java.beans.BeanInfo接口:不能直接实例化,通常通过Introspector类返回该类型对象,提供了返回属性描述对象(PropertyDescriptor)、方法描述对象(MethodDescriptor)、bean描述符(BeanDescriptor)对象的方法
Introspector类
内省涉及到类和接口
方法
内省确定属性名的方法
从getXXX和setXXX方法的XXX 第一个字母小写后确定属性名