关于获取类的字段有两种方式:getFields()和getDeclaredFields()。我们先来看看这两者的区别吧:
getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
具体编码如下:
我们先创建一个POJO
publicclassUser{privatelongid;privateStringname;publicvoidsetId(longid){this.id=id;}publicvoidsetName(Stringname){this.name=name;}publiclonggetId(){returnid;}publicStringgetName(){returnname;}}再来获取此类中的所有字段
Field[]fields=User.class.getDeclaredFields();获取字段的名称
StringfieldName=field.getName();获取字段的修饰符
intfieldValue=field.getModifiers();//如:private、static、final等与某个具体的修饰符进行比较
Modifier.isStatic(fieldValue)//看此修饰符是否为静态(static)获取字段的声明类型
field.getType();//返回的是一个class与某个类型进行比较
field.getType()==Timestamp.class获取指定对象中此字段的值
ObjectfieldObject=field.get(user);//user可以看做是从数据库中查找出来的对象getDeclaredField和getField的主要区别: 1,getDeclaredMethods能拿到所有(不包括继承的方法); 2,getMethods只能拿到public方法(包括继承的类或接口的方法) 其他都一样。
getFields()获得某个类的所有的公共(public)的字段,包括父类。 getDeclaredFields()获得某个类的所有申明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 同样类似的还有getConstructors()和getDeclaredConstructors(),getMethods()和getDeclaredMethods()。