zoukankan      html  css  js  c++  java
  • 反射reflect-02

    package com.ics.day10_14;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    public class ReflectDemo {
        
        public static void main(String[] args) {
            String path = "com.ics.day10_14.User";
            try {
                Class<?> cla = Class.forName(path);
                
                //调用User的无参构造方法实例化一个对象
                User user = (User) cla.newInstance();//已过时
                
                //使用有参构造器
                Constructor<User> cons = (Constructor<User>) cla.getDeclaredConstructor(String.class, int.class);
                User user2 = cons.newInstance("zhangsan",18);
                System.out.println(user2.getName()+"---------"+user2.getAge());
                
                //通过反射api调用成员方法
                Method method = cla.getDeclaredMethod("setName", String.class);
                method.invoke(user, "lisi");
                System.out.println(user.getName());
                
                //通过反射操作属性
                Field field = cla.getDeclaredField("age");
                field.setAccessible(true);
                field.set(user, 30);
                System.out.println(user.getName()+"---------"+field.get(user));
                
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
        }
    
    }
  • 相关阅读:
    浅析Go中的MPG模式(一)
    panic: assignment to entry in nil map
    Golang 新手可能会踩的 50 个坑
    小刘的go面试题
    go 单元测试整理
    go test 测试单个文件和测试单个函数
    mac pro锁屏后没有声音了怎么处理
    go json返回时间字符串处理time.Time类型
    php求一个字符串中不重复的最长子串
    业务订单号生成算法,每秒50W左右,不同机器保证不重复,包含日期可读性好
  • 原文地址:https://www.cnblogs.com/hsRick/p/11673261.html
Copyright © 2011-2022 走看看