美文网首页
java反射获取本类和父类所有字段

java反射获取本类和父类所有字段

作者: 拄杖忙学轻声码 | 来源:发表于2021-09-29 22:58 被阅读0次

说明:

1、getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
2、getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
3、同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数。

获取父类所有字段:
要获取到当前类以及父类的所有属性,怎么办?

/*
 * Copyright (C) 2013 SHANGHAI VOLKSWAGEN, All rights reserved.
 * License version 1.0, a copy of which has been included with this.
 * @File  name:com.hkl.modules.utils.AnnotationUtil
 * @Create  on:2021/9/29
 * @Author:hkl
 */
package com.hkl.modules.utils;
 
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
 
/**
 * <p>ClassName:AnnotationUtil</p >
 * <p>Description:注解工具</p >
 * <p>Author:hkl</p >
 * <p>Date:2021/9/29</p >
 */
public class AnnotationUtil {
 
    /**
     * 获取本类及其父类的字段属性
     * @param clazz 当前类对象
     * @return 字段数组
     */
    public static Field[] getAllFields(Class<?> clazz) {
        List<Field> fieldList = new ArrayList<>();
        while (clazz != null){
            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
            clazz = clazz.getSuperclass();
        }
        Field[] fields = new Field[fieldList.size()];
        return fieldList.toArray(fields);
    }
 
}

测试:

    public static void main(String[] args) {
        DtoClass dtoClass = new DtoClass();

        Field[] allFields = AnnotationUtil.getAllFields(dtoClass.getClass());
        System.out.println("------------------------------------------");
        for (Field allField : allFields) {
            System.out.println("allField = " + allField.getName());
        }
    }

相关文章

  • java反射获取本类和父类所有字段

    说明: 1、getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。2、getDe...

  • Java反射常用API

    getMethods() getMethods()获取本类以及父类中所有public修饰符修饰的方法,包括本类和父...

  • 「转载」Java 反射 Reflection

    一、了解 Java 中的反射 1. 什么是 Java 的反射 Java反射是在程序运行时获取类的函数、属性、父类和...

  • 【Java 进阶】Java 反射

    反射:获取Class中所有字段(Field)与方法(Method),并实现调用(invoke) Java 反射简单...

  • Java 反射获取父类的字段字: NoSuchFieldExce

    在开发中,经常要存在需要将数据收集过来然后在内存中进行过滤,排序,分页的情况。写了一个过滤,排序,分页的工具,结果...

  • Java之反射Reflection

    什么是Java的反射 Java反射是可以让我们在运行时获取类的函数,属性,父类,接口等Class内部信息的机制。通...

  • Java反射

    简单总结下什么是Java反射,怎么使用。 Java反射机制 反射就是指JVM运行期,获取指定类所有的属性和方法的一...

  • 2022-04-11 jdk中getDeclaredField

    结论:只能获取类本身的字段,对父类的字段无法获取 下图中caseId是父类中的private字段: 报异常:NoS...

  • Java中的反射

    什么是反射 Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。 能做...

  • 使用反射机制实现javaBean的自动封装

    1 反射 什么是java反射呢?简单的说,对于java中任意一个类,利用反射都可以获取该类中的所有属性和方法,而对...

网友评论

      本文标题:java反射获取本类和父类所有字段

      本文链接:https://www.haomeiwen.com/subject/sfesnltx.html