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();
            }    
        }
    
    }
  • 相关阅读:
    网页打开速度的心理学
    UML建模——用例图(Use Case Diagram)
    漫谈干系人识别管理
    干系人分析的3个方法:除了目标用户还要考虑谁?
    计算机网络-复习笔记
    项目经理必掌握的国际项目管理知识体系结构及内容
    剑指Offer面试题:5.重建二叉树
    剑指Offer面试题:4.从尾到头打印链表
    剑指Offer面试题:3.替换空格
    剑指Offer面试题:2.二维数组中的查找
  • 原文地址:https://www.cnblogs.com/hsRick/p/11673261.html
Copyright © 2011-2022 走看看