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. bootstrop日历

    https://blog.csdn.net/cuixiaobo521/article/details/77880633

  2. Golang Map实现(四) map 的赋值和扩容

    title: Golang Map 实现 (四) date: 2020-04-28 18:20:30 tags: golang map 操作,是map 实现中较复杂的逻辑.因为当赋值时,为了减少has ...

  3. 对 spring 中默认的 DataSource 创建进行覆盖

    配置如下 /** * Primary:标识为主配置,将默认的配置覆盖掉 * ConfigurationProperties:设置配置来源 * * @return DataSource */ @Prim ...

  4. js 函数的多图片懒加载(lazy) 带插件版完整解析

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS实现图片懒加载效果 页面需求 1 ...

  5. SpringBoot内置生命周期事件详解 SpringBoot源码(十)

    SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringBoot事件监听 ...

  6. Material Design 设计规范总结(2)

    本文是Material Design设计规范总结的第二部分,是进行UI设计与前端开发的必备参考资料. 八.布局 (1)所有可操作元素最小点击区域尺寸:48dp X 48dp. (2)栅格系统的最小单位 ...

  7. jQuery里面click、this事件遇到(Django模型里for)相同的id名和class名想获取值

    遇到的原型是这样的!下面我把它简化一下; click事件: 在浏览器里面只能获取横线上面的值,和下面的第一个值!! 这是因为id等级比class高,而且js要求id不能重复! 当 转载于:https: ...

  8. Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) A Dead Pixel

    讨论坏点的左右上下的矩形大小. #include <bits/stdc++.h> using namespace std; int main() { int t; cin >> ...

  9. MySQL导出数据到文件中的方法

    MySQL导出数据到文件中的方法 1.导出数据到txt文件中实例:把数据表studscoreinfo中所有数据导出到指定的位置方法:select * from 表名 into outfile 指定导出 ...

  10. Python爬虫(一)爬百度贴吧

    简单的GET请求: # python2 import urllib2 response = urllib2.urlopen('http://www.baidu.com') html = respons ...