首页 > 编程语言 >Java通过反射获取Fields、Method、Constructor示例

Java通过反射获取Fields、Method、Constructor示例

时间:2023-05-15 22:23:13浏览次数:39  
标签:Java String 示例 Fields System private println public out

1. getFields()和getDeclaredFields()

  • getFields能获取该类和父类(包括Object)public的属性,getDeclaredFields获取该类public和private的属性

2. getMethods()和getDeclaredMethods()

  • getMethods能获取该类和父类(包括Object)public的方法,getDeclaredMethods获取该类public和private的方法

3. getConstructors()和getDeclaredConstructors()

  • getConstructors能获取该类public的构造方法,getDeclaredConstructors获取该类public和private的构造方法

示例代码:

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class TestReflection {
    public static void main(String[] args) throws ClassNotFoundException {
        Class c = Class.forName("Son");

        // 能获取该类和父类public的属性
        for (Field field : c.getFields()) {
            System.out.println(field);
        }
        System.out.println("====================");

        // 获取该类public和private的属性
        for (Field field : c.getDeclaredFields()) {
            System.out.println(field);
        }
        System.out.println("====================");

        // 能获取该类和父类public的方法
        for (Method method : c.getMethods()) {
            System.out.println(method);
        }
        System.out.println("====================");

        // 获取该类public和private的方法
        for (Method method : c.getDeclaredMethods()) {
            System.out.println(method);
        }
        System.out.println("====================");

        // 能获取该类public的构造方法
        for (Constructor constructor : c.getConstructors()) {
            System.out.println(constructor);
        }
        System.out.println("====================");

        // 获取该类public和private的构造方法
        for (Constructor declaredConstructor : c.getDeclaredConstructors()) {
            System.out.println(declaredConstructor);
        }
    }
}

class Son extends father {
    public String s1;

    private String s2;

    public String method1() {
        return "method1";
    }

    private String method2() {
        return "method2";
    }

    public Son() {
    }

    private Son(String test) {
    }
}

class father {
    public String s11;

    private String s22;

    public String method11() {
        return "method11";
    }

    private String method22() {
        return "method22";
    }

    public father() {
    }

    private father(String test) {
    }
}

结果:
image

标签:Java,String,示例,Fields,System,private,println,public,out
From: https://www.cnblogs.com/wwwgo/p/17403326.html

相关文章

  • Java学习笔记(十二)
    1、    请描述你理解的对象数组对象数组是一种由多个对象组成的数组,每个元素都是一个对象。在Java中,对象数组可以用来存储同一类型的对象,这些对象可以是预定义的类对象,也可以是自定义的类对象。2、请描述数组的扩容机制扩容其实就是定义一个空间程度更大的数组,然后把原......
  • Java设计模式-简单工厂模式
    简介在软件开发过程中,设计模式是一种被广泛应用的实践,它是通过总结、归纳和提炼出软件设计经验,从而使得设计更加优雅、高效。简单工厂模式是设计模式中最基本、最简单的一种模式,它能够有效地封装对象的创建过程,简化代码结构。简单工厂模式又称为静态工厂方法模式,它是通过定义一......
  • Java设计模式-桥接模式
    简介桥接模式(BridgePattern)是一种结构性设计模式,它的主要作用是将抽象部分和实现部分解耦,使它们可以独立变化而不会互相影响。桥接模式最早由GoF(GangofFour)提出,在《设计模式》一书中有详细的介绍。桥接模式和其他设计模式的区别在于它关注的是如何将抽象和实现分离,从而达到灵......
  • JAVA反序列化-URLDNS分析
    目录0x01URLDNS0x02利用链分析本文基于P大的《java安全漫谈》环境jdk1.7urldns是学习JAVA反序列化的入门利用链0x01URLDNSURLDNS就是ysoserial中⼀个利⽤链的名字,但准确来说,这个其实不能称作“利⽤链”。因为其参数不是⼀个可以“利⽤”的命令,⽽仅为⼀个URL,其能触发的结......
  • 给定一个字符串,用java代码找出其中不含有重复字符的最长子串的长度
    publicintlengthOfLongestSubstring(Strings){intn=s.length(),ans=0;Map<Character,Integer>map=newHashMap<>();for(inti=0,j=0;j<n;j++){if(map.containsKey(s.charAt(j))){i=Math.ma......
  • Java并发(六)----线程start、run、state方法
    1、start与run调用runpublicstaticvoidmain(String[]args){  Threadt1=newThread("t1"){    @Override    publicvoidrun(){      log.debug(Thread.currentThread().getName());//打印线程名称      FileRe......
  • Java并发(五)----线程常见方法总结
    常见方法方法名static功能说明注意start() 启动一个新线程,在新的线程运行run方法中的代码start方法只是让线程进入就绪,里面代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象的start方法只能调用一次,如果调用了多次会出现IllegalThreadStateException......
  • 4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)
    目录Hadoop系列文章目录一、pom.xml二、junit测试类三、操作类(帮助类)四、高可用环境的操作类本文编写了java对HDFS的常见操作,并且均测试通过。其功能包含构造conf、设置系统环境变量、创建目录、判断文件是否存在、获取文件/目录的大小等,具体见下图。本文分为四部分,即pom.xml、ju......
  • 12、HDFS Trash垃圾桶回收介绍与示例
    文章目录Hadoop系列文章目录一、介绍二、HDFSTrash功能开启1、关闭HDFS集群2、修改core-site.xml文件3、同步集群配置文件4、启动HDFS集群三、HDFSTrash功能验证1、删除文件并验证2、不进回收站的删除3、从Trash中恢复文件4、清空Trash本文主要介绍HDFSTrash垃圾桶回收。前提......
  • 16、MapReduce的基本用法示例-自定义序列化、排序、分区、分组和topN
    文章目录Hadoop系列文章目录一、pom.xml与测试数据说明、日志配置1、pom.xml2、数据字段说明3、日志配置二、序列化1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证三、排序1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证四、分区1......