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();
            }    
        }
    
    }
  • 相关阅读:
    反射学习系列3反射实例应用
    (转)华为牛人在华为工作十年的感悟!
    利用日志记录所有LINQ的增,删,改解决方案
    qt5摄像头
    opencvcartToPolar笛卡尔坐标转极坐标
    逆矩阵
    方阵的行列式
    qt5右键菜单
    矩阵的转置
    opencvpyrDown降采样和pyrUp升采样
  • 原文地址:https://www.cnblogs.com/hsRick/p/11673261.html
Copyright © 2011-2022 走看看