• 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         //之后要想调用哪个类的哪个方法,只需要去配置文件更改相对应的键值就可以了。
  • 相关阅读:
    tableView小细节
    iOS5 切换中文键盘时覆盖输入框的解决方案
    NSBundle读取txt文件,图片,plist
    iOS OC 字符串处理
    图片拉伸 几种方式
    UIAlertView小结
    新来报道
    VC6.0之Debug调试总结
    关于C++中的临时对象问题
    与临时对象的斗争(下)
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5967129.html
Copyright © 2020-2023  润新知