zoukankan      html  css  js  c++  java
  • java反射小实例

    利用反射实现

    对配置文件的更改达到更改方法的目的

    文件夹目录

    首先Student类中有个sleep方法

     pro.properties定义了参数

    最后是RelectTestMain。

    package com.reflex.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.Properties;
    
    import javax.annotation.Resource;
    import javax.annotation.Resources;
    
    import com.reflex.bean.Person;
    import com.reflex.bean.Student;
    
    public class RelectTestMain {
        public static void  main(String[] args) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException {
            /*1、加载配置文件
             * 用类名.class.getResourceAsStream("/xx")或者
             *   类名.class.getClassLoader().getResourceAsStream("xx");
             *         区别在于前者是需要反斜杠,后者不需要
             * */
            Properties properties = new Properties();
            properties.load(RelectTestMain.class.getResourceAsStream("/pro.properties"));
            //2、获取配置文件中定义的数据
            String className = properties.getProperty("className");
            String methodName = properties.getProperty("methodName");
            //3、加载该类进内存
            Class cls = Class.forName(className);
            //4、创建类对象
            Object obj = cls.newInstance();
            //5、获取对象方法
            Method method = cls.getMethod(methodName);
            //6、执行方法
            method.invoke(obj);
        }
    }
    View Code

    如果需要传入参数,则在获取对象的时候使用getDeclaredMethod方法,附上参数类的class,最后再在invork调用方法的时候附带上参数。(这里偷工减料参数直接写了,最好也是通过配置动态加载进来

  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/Esquecer/p/11126720.html
Copyright © 2011-2022 走看看