class.getFields的定义

  • 返回类提供的public域包括超类的共有变量;

    注: 是public,我们平时定义变量一般用的private,如果用getFields是不会获得.

class.getDeclareFields的定义

  • 返回类中声明的全部域,其中包括私有和受保护的成员,但是不包括父类的成员.

    注: 与getFields不同的就是getDeclareFields能返回声明中所有定义的成员变量,不管你是私有还是保护的,但是仅限于当前类中的不包括父类的成员.

代码演示

1.定义一个Account类

public class Account {
private String address;
}

2.定义一个User类继承了Account类

public class User extends Account{

    private  String name;

    private  String sex;

}

3.测试类

public class Test {

    public static void main(String[] args) {
Class clazz = User.class;
Field[] fields = clazz.getFields();
for (Field field : fields){
System.out.println("getFields: " + field.getName());
}
System.out.println("=====================");
fields = clazz.getDeclaredFields();
for (Field field : fields){
System.out.println("getDeclaredFields: " + field.getName());
} }
}

4.结果

=====================
getDeclaredFields: name
getDeclaredFields: sex

5.改变Account中address的属性为public并打印

getFields: address
=====================
getDeclaredFields: name
getDeclaredFields: sex

6.改变User中name的属性为public并打印

getFields: name
getFields: address
=====================
getDeclaredFields: name
getDeclaredFields: sex

7.综上基本可以验证定义

  • 如果你想获得一个类的所有成员,需要使用getDeclareFields;
  • 如果你只想获得一个类的所有公有成员,可以使用getFields;但是其中还包括父类的公有成员;那小朋友可能要问了,如果我只想获得当前类的公有成员应该怎么做呢?
  • 我觉得可以用getDeclareFields与getFields取交集即可取出当前类的公有成员;

本篇只是看《Java核心技术卷1》一个随笔记录,与君共勉;

class.getFields和class.getDeclareFields的区别的更多相关文章

  1. Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别

    Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别 ​ 在工作中遇到一个问题,就是你需要去判断某个字符串是不是对象的某个成员属性名,然后根据判断结果 ...

  2. JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来 ...

  3. [转]JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别

    关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类 ...

  4. java 中getDeclaredFields() 与getFields() 的区别

    java 中getDeclaredFields() 与getFields() 的区别 getDeclaredFields()返回Class中所有的字段,包括私有字段.例证: package com.t ...

  5. getFields()和getDeclaredFields()的区别

    getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...

  6. Class.getDeclaredFields()和Class.getFields()的区别。 Class.getMethods()和Class.getDeclaredMethods()的区别。

    package www.cn.extend; /** Animal * 2019/07/04 * @author Administrator * */ public class Animal { pu ...

  7. java field, property,variable及getField和getDeclaredField的区别

    java 里面的field ,property, attribute,variable的区别 field: 就是定义的用于保存数据的字段 property: property是用于描述类中的特征,所以 ...

  8. 第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)

    一. 基本介绍 回忆: 最早接触到表达式目录树(Expression)可能要追溯到几年前使用EF早期的时候,发现where方法里的参数是Expression<Func<T,bool> ...

  9. 1、ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别

    1.ClassLoader.getResourceAsStream() 与Class.getResourceAsStream()的区别 例如你写了一个MyTest类在包com.test.mycode ...

随机推荐

  1. ES6新增的Map和WeakMap 又是什么玩意?非常详细的解释

    上一篇文章讲了set和weakSet,这节咱就讲Map和weakMap是什么?这两篇文章并没有什么联系,主要知识用法类似而已.嘿嘿,是不是感觉舒服多了. 什么是Map 介绍什么是Map,就不得不说起O ...

  2. IntelliJ IDEA在mac中完全删除方法

    cd /Applications/ rm -r IntelliJ\ IDEA.app/ rm -r /Users/apple/Library/Logs/IntelliJIdea2019.3/ rm - ...

  3. thinkphp5--model数据操作的坑

    最近用thinkphp5开发,经常用到model了来操作数据,但是操作多了,就发现他的坑了. 就好像如果你只是初始化一个model对象,但是你却用这个对象进行多次的数据操作,这时候他的数据就会发生混乱 ...

  4. SpringBoot应用操作Rabbitmq

    记录RabbitMQ的简单应用 1.springboot项目中引入maven包,也是springboot官方的插件 <dependency> <groupId>org.spri ...

  5. 【Linux常见问题】CentOS 7 root用户密码忘记,找回密码方法

    1.开机按esc 2.选择CentOS Linux (3.10.0-693.......)     按 e 键: 3.光标移动到 linux 16 开头的行,找到 ro 改为 rw init=sysr ...

  6. mac OS 安装 nvm

    nvm官网 https://github.com/creationix/nvm nvm,node,npm之间的区别 nvm:nodejs 版本管理工具 一个 nvm 可以管理很多 node 版本和 n ...

  7. Next.js 7发布,构建速度提升40%

    Next.js团队发布了其开源React框架的7版本.该版本的Next.js主要是改善整体的开发体验,包括启动速度提升57%.开发时的构建速度提升40%.改进错误报告和WebAssembly支持. \ ...

  8. 开启Apache服务出现的错误

    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for Se ...

  9. nginx的数据结构集合(随时更新)

    在学习nginx的时候,因为其数据结构略多,看过后一般就忘记了.所以边学习边记录在这里吧,方便以后查看. ngx_buf_t:缓冲区结点 1: typedef struct ngx_buf_s ngx ...

  10. Codeforces Round #637 (Div. 2) 题解

    A. Nastya and Rice 网址:https://codeforces.com/contest/1341/problem/A Nastya just made a huge mistake ...