java 中getDeclaredFields() 与getFields() 的区别
getDeclaredFields()返回Class中所有的字段,包括私有字段。例证:
- package com.test.bean;
- import java.sql.Timestamp;
- public class Person2 {
- private int id;
- private int age;
- private String personName;
- private Timestamp birthdate;
- public String identitify;
- protected String address;
- String phone;
- }
- @Test
- public void test_getDeclaredFields() {
- Field[]fields=Person2.class.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- System.out.println(field.getName());
- }
- }
package com.test.bean; import java.sql.Timestamp; public class Person2 { private int id; private int age; private String personName; private Timestamp birthdate; public String identitify; protected String address; String phone; } @Test public void test_getDeclaredFields() { Field[]fields=Person2.class.getDeclaredFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; System.out.println(field.getName()); } }
运行结果:
id
age
personName
birthdate
identitify
address
phone
getFields 只返回公共字段,即有public修饰的字段。例证:
- @Test
- public void test_getDeclaredFields() {
- Field[]fields=Person2.class.getFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- System.out.println(field.getName());
- }
- }
@Test public void test_getDeclaredFields() { Field[]fields=Person2.class.getFields(); for (int i = 0; i < fields.length; i++) { Field field = fields[i]; System.out.println(field.getName()); } }
运行结果如下:
identitify
总结:
(1)getDeclaredFields()返回Class中所有的字段,包括私有字段;
(2)getFields 只返回公共字段,即有public修饰的字段
相关推荐
利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...
getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。 getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。 同样类似的还有getCo
Class类中getFields()和getDeclaredFields()都是用来获取成员变量的方法,那么它们之间有什么区别呢? 我们首先使用代码来进行演示,然后我们再根据运行结果进行分析。 1.1定义一个实体类Person public class Person...
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个磨砺营的java反射讲解,非常受益。于是,哈哈哈 public static <T> void modelTrim(T model){ Class<T> ...
文章目录一、Java代码在计算机中经历的三个阶段(一):源代码阶段(二):Class类对象(三):运行时阶段二、常用API的运用(一)获取class对象的三种方式1.Class.forName(String className)2.类名.class3.对象....
Class 类的实例表示正在运行的 Java 应用程序中的类和接口; 枚举是一种类,注解(指的是注解Annotation)是一种接口; 每个数组都是 Class字节码类中的一个具体 对象 基本的 Java 类型(boolean、byte、...
一个MVP的demo,一步一步教你实现MVP模式,从最基础的一步一步封装,内含有通过反射减少重复代码,其中在缩减共同代码是有一线小失误,不想再重新上传了,ProxyImp中 bindPresenter() { // 获得已申请的变量,包括...
反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高 比较常用的方法 getDeclaredFields(): 可以获得class的...
一、aop中执行顺序 @Pointcut定义切点 ③ @Before → @Method ① ↑② :down-left_arrow:④ AOP -------→ @Around ↓⑤ @After ↓⑥ @AfterReturn 反射机制允许程序在运行时取得任何一个已知名称的class的内部信息...
Field fields[] = cls.getDeclaredFields(); String varName[] = new String[fields.length]; for (int i = 0; i ; i++) { varName[i] = fields[i].getName(); } try { JSONObject jsonObject = new...
为了进一步熟悉SSM框架,我单独摘出了mybatis部署在普通的java Web项目上,从spring上插入了依赖注入,自己根据反射编写了一个映射工具类,可以根据前端返回的信息来封装bean FormBean如下 public class FormBean { ...
fields = Build.VERSION_CODES.class.getDeclaredFields(); for (Field field : fields) { try { // 暴力反射,获取私有信息 field.setAccessible(true); infos.put("VERSION_CODES." + field....