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();
            }
        }
    }
  • 相关阅读:
    NYOJ 91 阶乘之和
    NYOJ 47 过河问题
    NYOJ 12 喷水装置(二)
    NYOJ 78 圈水池(凸包问题)
    NYOJ 523 亡命逃窜( bfs )
    NYOJ 564 最优对称路径(湖南省第七届大学生计算机程序设计竞赛)
    NYOJ 491 幸运三角形(bitset)
    排列组合 C(n,k)= C(n1)+C(n1,k1) 对应于杨辉三角
    Android (服务Service)
    Android (界面编程#5ProgressDialog)
  • 原文地址:https://www.cnblogs.com/howhy/p/15211223.html
Copyright © 2011-2022 走看看