java 发表于 2019-1-17 14:22:34

java反射

本帖最后由 java 于 2019-4-12 11:32 编辑

java反射:简单说就是根据字符串的 数据类名\方法名等
动态创建出对象,并调用其方法


https://www.cnblogs.com/tech-bird/p/3525336.html

反射小结 1. Class: 是一个类; 一个描述类的类.
  封装了描述方法的 Method,
       描述字段的 Filed,
            描述构造器的 Constructor 等属性.

2. 如何得到 Class 对象:
  2.1 Person.class
  2.2 person.getClass()
  2.3 Class.forName("com.atguigu.javase.Person")

3. 关于 Method:
  3.1 如何获取 Method:
    1). getDeclaredMethods: 得到 Method 的数组.
    2). getDeclaredMethod(String methondName, Class ... parameterTypes)

  3.2 如何调用 Method
    1). 如果方法时 private 修饰的, 需要先调用 Method 的 setAccessible(true), 使其变为可访问
    2). method.invoke(obj, Object ... args);

4. 关于 Field:
  4.1 如何获取 Field: getField(String fieldName)
  4.2 如何获取 Field 的值:
    1). setAccessible(true)
    2). field.get(Object obj)
  4.3 如何设置 Field 的值:
    field.set(Obejct obj, Object val)

5. 了解 Constructor 和 Annotation

6. 反射和泛型.
  6.1 getGenericSuperClass: 获取带泛型参数的父类, 返回值为: BaseDao<Employee, String>
  6.2 Type 的子接口: ParameterizedType
  6.3 可以调用 ParameterizedType 的 Type[] getActualTypeArguments() 获取泛型参数的数组.


页: [1]
查看完整版本: java反射