A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.itheima;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.lang.reflect.Constructor;
  5. import java.lang.reflect.Method;
  6. import java.util.Properties;
  7. public class Test7 {
  8.         /**
  9.          * 7、 已知一个类,定义如下:
  10.          *
  11.          * package cn.itcast.heima;
  12.          * public class DemoClass {
  13.          *                  public void run() {
  14.          *                                 System.out.println("welcome to heima!");
  15.          *                 }
  16.          * }
  17.          * (1)写一个Properties格式的配置文件,配置类的完整名称。 (2)
  18.          * (2)写一个程序,读取这个Properties配置文件,获得类的完整名称并加载这个类,用反射 的方式运行run方法。
  19.          * @param args
  20.          */
  21.         public static void main(String[] args) throws Exception {
  22.                 loadFile();
  23.         }
  24.         public static void loadFile() throws Exception {
  25.                 // 利用Properties类加载配置文件,它以键值对形式取出数据
  26.                 Properties prop = new Properties();
  27.                 // 字节读取配置文件
  28.                 FileInputStream fis = new FileInputStream(new File(
  29.                                 "src/com/itheima/Test.properties"));
  30.                 // 加载配置文件中键值
  31.                 prop.load(fis);
  32.                 // System.out.println(prop);
  33.                 // 关闭流
  34.                 fis.close();
  35.                 // 设置了key,通过配置文件的key取出类的完整名称
  36.                 String stringClassName = prop.getProperty("className");
  37.                 // 设置了key,通过配置文件的key取出类的完整方法名称
  38.                 String stringMethedName = prop.getProperty("methedName");
  39.                 //反射     反射三步1
  40.                 Class<?> forName = Class.forName(stringClassName);
  41.                 //调用无参构造     2
  42.                 Constructor<?> constructor = forName.getConstructor();
  43.                 System.out.println(forName);
  44.                 //利用无参构造对象实例化   3
  45.                 Object newInstance = constructor.newInstance();
  46.                 //调取对象的方法
  47.                 Method methods = forName.getMethod(stringMethedName);
  48.                 //调用方法(调用newInstance对象的methods方法)
  49.                 methods.invoke(newInstance);
  50.         }
  51. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马