ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反射-class对象功能概述和获取Field功能

2022-07-23 18:02:41  阅读:124  来源: 互联网

标签:功能 String 获取 age Fileld class Field public name


class对象功能概述

获取功能:

1.获取成员变量们

  • Fileld[] getFields()
  • Fileld getFileld(String name).

 

  • Fileld[] getDeclaredFilds()
  • Filed getDeclaredField(String name)

2.获取构造方法们

  • Constructor<?>[] getConstructors()
  • Constructor<T> getConstructor(类<?>... parameterTypes)

 

  • Constructor<T> getDeclaredConstrutor(类<?>... parameterTypes)
  • Constructor<?> getDeclaredConstructors()

3.获取成员方法们

  • Method[] getMethods()
  • Method getMethod(String name,类<?>... parameterTypes)

 

  • Method[] getDeclaredMethods()
  • Method getDeckaredMethod(String name,类<?>... paramterTypes)

4.获取类名

  •  String getName()

获取Field功能

 获取Field

  • Fileld[] getFields() 获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
  • Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加

 

  • Fileld[] getDeclaredFilds()获取所有成员变量
  • Filed getDeclaredField(String name)获取指定成员变量

 

  • a.setAccessible(boolean flay);忽略修饰符的安全检查 俗称暴力反射

代码:

public class ReflectDemo02 {

    public static void main(String[] args) throws Exception {
        //1.获取Person的Class对象
        Class personClass = Person.class;
        /*
        Fileld[] getFields() 获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
        Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
         */
        //Fileld[] getFields()获取所有public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
        Field[] fields = personClass.getFields();
        for (Field field : fields) {
            System.out.println(field);
        }

        System.out.println("---------------------");
        //Fileld getFileld(String name).获取指定public修饰的成员变量 注意:如果不是public都不会获取 必须手动添加
        Field age = personClass.getField("age");
        //获取成员变量age的值
        Person p = new Person();
        Object o = age.get(p);
        System.out.println(o);
        //设置成员变量age的值
        age.set(p, 10);
        //获取成员变量age的值
        o = age.get(p);
        System.out.println(o);

        System.out.println("--------------------------");
        /*
        Fileld[] getDeclaredFilds()
        Filed getDeclaredField(String name)
         */
        //Fileld[] getDeclaredFilds()
        Field[] fields1 = personClass.getDeclaredFields();
        for (Field field : fields1) {
            System.out.println(field);
        }
        System.out.println("----------------------------");
        //Filed getDeclaredField(String name)
        Field a = personClass.getDeclaredField("a");
        //在获取不是public的成员变量时 需要忽略修饰符的安全检查
        a.setAccessible(true);//这种我们称为 暴力反射
        //获取成员变量age的值
        Object o1 = a.get(p);
        System.out.println(o1);


    }

运行结果:

标签:功能,String,获取,age,Fileld,class,Field,public,name
来源: https://www.cnblogs.com/aimz01/p/16512497.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有