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();
            }
        }
    }
  • 相关阅读:
    shell test条件判断
    shell 变量
    shell 流程结构
    shell 正则表达式
    shell脚本常用参数
    snmp 简单的网络管理协议
    linux
    nmap
    git 基础操作
    linux 下 svn 更新代码
  • 原文地址:https://www.cnblogs.com/howhy/p/15211223.html
Copyright © 2011-2022 走看看