反射_Class对象功能_获取method

Method:方法对象

  执行方法

   Object invoke(Object obj, Object.... args)

  获取方法名称

   String getName:获取方法名

代码实现:

//获取Person的Class对象
        Class  personClass = Person.class;
        //获取指定名称
        Method method = personClass.getMethod("eat");
        Person person = new Person();
        //执行方法
        method.invoke(person);
Method eat = personClass.getMethod("eat", String.class);
        //执行方法
        eat.invoke(person,"饭");
        System.out.println("-----------");

        //获取所有public修饰的方法
        Method[] methods = personClass.getMethods();
        for (Method method1 : methods) {
            System.out.println(method1);
            String name = method1.getName();
            System.out.println(name);
        }
        String name = personClass.getName();
        System.out.println(name);

 

 

反射案例

需求:

  写一个框架,可以帮助我们创建任意的对象,并且执行其中任意方法

 

代码:

创建一个properties文间

 

 

 

 

 代码实例:

  

 //加载配置文件
        //创建properties
        Properties properties = new Properties();
        //加载配置文件,转换为一个集合
        //获取class目录下的配置文件

        ClassLoader classLoader = ReflectTest.class.getClassLoader();
        InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");
        properties.load(resourceAsStream);
        //获取配置文件中定义的数据
        String className = properties.getProperty("className");
        String methodName = properties.getProperty("methodName");

        //加载该类进内存
        Class aClass = Class.forName(className);
        //创建对象
        Object o = aClass.newInstance();
        //获取方法对象
        Method method = aClass.getMethod(methodName);
        //执行方法
        method.invoke(o);

 

posted on 2022-07-22 13:23  淤泥不染  阅读(71)  评论(0)    收藏  举报