首页 > 其他分享 >class对象功能概述和获取Field功能

class对象功能概述和获取Field功能

时间:2022-10-20 10:55:06浏览次数:48  
标签:功能 String 获取 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()

5、Field:成员变量

 操作:

  1.设置值:void set(Object obj,Object value)

  2.获取值:get(Object obj)

  3.忽略范围权限修饰符的安全检查:setAccessible(true):暴力反射

6、Construction:构造方法

 创建对象:

   T newInstance(Object... initargs)

   如果使用空参数构造方法创建对象,操作可以简化:class对象的newInstance

 获取Field功能

 获取Field

  • Fileld[] getFields() 获取所有public修饰的成员变量  注意:如果不是public都不会获取 必须手动添加
  • Fileld getFileld(String name).获取指定public修饰的成员变量   注意:如果不是public都不会获取 必须手动添加
  • Fileld[] getDeclaredFilds()获取所有成员变量
  • Filed getDeclaredField(String name)获取指定成员变量
  • a.setAccessible(boolean flay);忽略修饰符的安全检查 俗称暴力反射

代码案例:

public class ReflectDemo {

    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,获取,Fileld,class,Field,public,name
From: https://www.cnblogs.com/shenziyi/p/16808895.html

相关文章