zoukankan      html  css  js  c++  java
  • 通过反射动态创建对象执行方法

    通过反射动态创建对象执行方法

    有了Class对象,能做什么?

    调用指定的方法

    Object invoke方法

    setAccessible

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    
    //动态的创建对象,通过反射
    public class Test09 {
        public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
            //获得Class对象
            Class c1 = Class.forName("com.lu.reflection.User");
    
            //构造一个对象
            //User user = (User) c1.newInstance();    //本质上是调用了类的无参构造器
            //System.out.println(user);
    
            //通过构造器创建对象
            //Constructor constructor = c1.getDeclaredConstructor(String.class, int.class, int.class);
            //User use2 = (User) constructor.newInstance("卢", 001, 18);
            //System.out.println(use2);
    
            //通过反射调用普通方法
            User user3 = (User) c1.newInstance();
    
            //通过反射获取一个方法
            Method setName = c1.getDeclaredMethod("setName", String.class);
    
            //invoke : 激活的意思
            //(对象,"方法的值")
            setName.invoke(user3,"小卢");
            System.out.println(user3.getName());
    
            //通过反射操作属性
            System.out.println("99999999999999999999");
            User user4 = (User) c1.newInstance();
            Field name = c1.getDeclaredField("name");
    
            //不能直接操作私有属性,我们需要关闭程序的安全检测,属性或者方法的setAccessible(true).
            name.setAccessible(true); //
    
            name.set(user4,"狂神2");
            System.out.println(user4.getName());
    
        }
    }
    
  • 相关阅读:
    Ado.Net 调用存储过程用法
    C程序设计语言练习题1-22
    C程序设计语言练习题1-21
    C程序设计语言练习题1-20
    C程序设计语言练习题1-19
    C程序设计语言练习题1-18
    C程序设计语言练习题1-17
    C程序设计语言练习题1-16
    C程序设计语言练习题1-15
    C程序设计语言练习题1-14
  • 原文地址:https://www.cnblogs.com/helloxiaolu/p/13330745.html
Copyright © 2011-2022 走看看