zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
  • 相关阅读:
    Linux下Utuntu使用
    模拟退火算法
    五大常用算法:分治、动态规划、贪心、回溯和分支界定
    图像处理与机器视觉行业分析
    数字图像处理知识结构整理
    算法之美--读书笔记
    台湾大学林轩田和李宏毅机器学习课程
    下载SCI论文
    OpenCV机器学习库函数--SVM
    fmri的图像数据在matlab中显示,利用imagesc工具进行显示,自带数据集-by 西南大学xulei教授
  • 原文地址:https://www.cnblogs.com/howhy/p/15211223.html
Copyright © 2011-2022 走看看