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();
            }    
        }
    
    }
  • 相关阅读:
    高可用Redis服务架构分析与搭建
    Java 程序性能问题
    限流、熔断、服务降级理解
    设计模式-享元设计
    设计模式-原型设计
    java8 Stream原理
    SQL语句性能优化策略
    OAuth2和JWT
    5种常见的Docker Compose错误
    leetcode_699. 掉落的方块
  • 原文地址:https://www.cnblogs.com/hsRick/p/11673261.html
Copyright © 2011-2022 走看看