• java 反射


    package com.howhy.demo;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.sql.SQLOutput;
    import java.util.*;
    import java.util.function.Consumer;
    import java.util.function.Supplier;
    import java.util.stream.Stream;
    
    public class Demo1 {
        public static void main(String[] args) {
            Class person = Person.class;
            Field[] fields = person.getFields();//获取public修饰的成员变量
            for (Field f : fields) {
                System.out.println(f);
            }
            Field[] declaredFields = person.getDeclaredFields();//获取所有的成员变量与修饰符无关
            for (Field f : declaredFields) {
                System.out.println(f);
            }
            try {
                System.out.println(person.getField("name"));
                Field ff = person.getDeclaredField("name");//  Field ff = person.getDeclaredField("name") ;       ff.setAccessible(true); //private 若不加此句会报错无法get set
                Person p=new Person();
                Object obj=ff.get(p);//get方法
                ff.set(p,"eeee");//set方法
                System.out.println(ff.get(p));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
            Object aa = null;
            try {
                Constructor constructor = person.getConstructor(String.class, Integer.class);
                aa = constructor.newInstance("aa", 23);
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
            System.out.println(aa);
            Method say = null;
            try {
                say = person.getMethod("say");
                Person ccc = new Person("ccc", 23);
                say.invoke(ccc);
                say = person.getMethod("say",String.class);
                say.invoke(ccc,"44444");
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    Laravel8 + yansongda/laravelpay 3.1 遇到的问题
    Linux线程02
    Linux线程03
    链表
    02范围for语句,new内存分配,nullptr
    Linux线程01
    01auto关键字,头文件防卫,引用,常量
    (2020行人再识别综述)Person ReIdentification using Deep Learning Networks: A Systematic Review
    (2022 IVC 行人再识别综述)Deep learningbased person reidentification methods: A survey and outlook of recent works
    <a>标签的href传参带中文
  • 原文地址:https://www.cnblogs.com/howhy/p/15211223.html
Copyright © 2020-2023  润新知