zoukankan      html  css  js  c++  java
  • java 27

    在以前,如果我们想要调用一个类中的方法,只能这样子:

    例:

      有Cat和Dog两个类,里面有eat和run两个成员方法:

     1 public class Dog {
     2 
     3     public void eat() {
     4         System.out.println("狗吃肉");
     5     }
     6     
     7     public void run() {
     8         System.out.println("狗刨");
     9     }
    10 }
    public class Cat {
    
        public void eat() {
            System.out.println("猫吃鱼");
        }
    
        public void run() {
            System.out.println("猫爬树");
        }
    }

    在之前,如果想要调用类里面的方法,只能这样:

    这样做,有个缺点,如果类多了,方法多了,以后的更改很麻烦。

    1         //之前的做法
    2         Cat c = new Cat();
    3         c.eat();
    4         c.run();
    5         
    6         Dog d = new Dog();
    7         d.eat();
    8         d.run();

    那么,为了以后的更改的方便。

    创建个对应的配置文件,运用反射来访问这些方法:

    配置文件:(Properties 类表示了一个持久的属性集。里面的内容就是键值对  “aaaa=bbb ”)

      例:

    1 ClassName=zl_Reclfect_05.Cat
    2 MethodName=eat

      

      创建个反射的类来通过配置文件调用类中的方法:

    之后要想调用哪个类的哪个方法,只需要去配置文件更改相对应的键值就可以了。

     1 //反射的做法
     2         
     3         //Properties类:
     4         //C、public String getProperty(String key):根据键获取值
     5         
     6         //加载键值对数据        
     7     
     8         //首先创建个属性集类
     9         Properties p = new Properties();
    10         //封装配置文件
    11         FileReader file = new FileReader("class.txt");
    12         //获取键的集合
    13         //void load(InputStream inStream)  从输入流中读取属性列表(键和元素对)。 
    14         p.load(file);
    15         file.close();
    16         
    17         //获取键的值(做配置文件,肯定知道键的)
    18         String classname = p.getProperty("ClassName");
    19         String methodname = p.getProperty("MethodName");
    20         
    21         //用反射来调用成员方法
    22         
    23         //获取字节文件对象
    24         Class c = Class.forName(classname);
    25         
    26         //无参构造创建对象
    27         Constructor con = c.getConstructor();
    28         Object obj = con.newInstance();
    29         
    30         //调用方法
    31         Method m = c.getMethod(methodname);
    32         m.invoke(obj);
    33         
    34         //之后要想调用哪个类的哪个方法,只需要去配置文件更改相对应的键值就可以了。
  • 相关阅读:
    2020暑假项目-车辆派遣管理系统需求
    2020暑假项目-车辆派遣管理系统
    关于页面刷新或者调用方法事获取不到元素信息或者出现缺少对象错误的换位思考setTimeout的使用
    JSON 传值 textarea中虚拟换行功能
    我的MYSQL学习心得(十) 自定义存储过程和函数
    我的MYSQL学习心得(九) 索引
    我的MYSQL学习心得(八) 插入 更新 删除
    我的MYSQL学习心得(六) 函数
    我的MYSQL学习心得(七) 查询
    我的MYSQL学习心得(四) 数据类型
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5967129.html
Copyright © 2011-2022 走看看