Java 反射获取值

  1. getClass()
Class clazz = object.getClass();

获取此时object的类。

  1. getDeclaredFields() ,getFields()
Field[] fields = clazz.getDeclaredFields()

getDeclaredFields() 获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。

getFields() 获得某个类的所有的公共(public)的字段,包括父类中的字段。

同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数。

  1. getConstructors()和getDeclaredConstructors() 这两者分别表示获取某个类的方法。

  2. getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的构造函数。

获取字段的名称
5. String fieldName = field.getName();

获取字段的修饰符
6. int fieldValue = field.getModifiers();//如:private、static、final等

与某个具体的修饰符进行比较
7. Modifier.isStatic(fieldValue)//看此修饰符是否为静态(static)

获取字段的声明类型
8. field.getType();//返回的是一个class

与某个类型进行比较
9. field.getType() == Timestamp.class

  1. setAccessible(true)
    提高java反射速度的方法setAccessible(true) 。这个方法只是启用是否检查,并不影响正常访问

  2. getType() 和 getGenericType()的区别
    getType(): 获取属性声明时类型对象(返回class对象)
    getGenericType() : 返回属性声的Type类型
    1.首先是返回的类型不一样,一个是Class对象一个是Type接口。
    2.如果属性是一个泛型,从getType()只能得到这个属性的接口类型。但从getGenericType()还能得到这个泛型的参数类型。
    3.getGenericType()如果当前属性有签名属性类型就返回,否则就返回 Field.getType()。

  3. Class类 getName()、getCanonicalName()、getSimpleName()、getTypeName() 方法的异同方法详解

你可能感兴趣的:(学习笔记)