zoukankan      html  css  js  c++  java
  • Java--反射与配置文件小练习

    一、需求:通过加载配置文件,并利用反射运行配置文件中指定类的对应方法

    二、具体实现:

    现有一个Person类,如下:

    public class Person {
    	
    	private String name;
    	private int age;
    
    	public Person() {
    	}
    
    	Person(String name, int age) {
    		this.name = name;
    		this.age = age;
    	}
    
    	public void sayHello() {
    		System.out.println("name:"+this.name+"-->"+this.age);
    	}
    }
    

    为了方便,此处使用class.txt文件来代替配置文件。

    className = study01.Person
    methodName = sayHello
    

    测试如下:

    public class Test {
    	public static void main(String[] args) throws Exception {
    		//创建配置文件实例
    		Properties prop = new Properties();
    		//加载配置文件
    		FileInputStream is = new FileInputStream("src/study01/class.txt");
    		prop.load(is);
    		//加载需要运行的类名和方法名
    		String className = prop.getProperty("className");
    		String menthodName = prop.getProperty("methodName");
    		//创建Class对象
    		Class c = Class.forName(className);
    		//获取构造方法
    		Constructor con = c.getDeclaredConstructor(String.class, int.class);
    		//创建实例
    		Object obj = con.newInstance("跑调大叔", 20);
    		//获取需要运行的Method对象
    		Method m = c.getDeclaredMethod(menthodName);
    		//运行方法
    		m.invoke(obj);
    	}
    }
    

    测试结果如下:

    现在如果需要运行不同类以及不同类中的方法时,只需要更改配置文件中的键值对即可。

    Java新手,若有错误,欢迎指正!

  • 相关阅读:
    (转)MapReduce源码分析总结
    Linux SSH远程文件/目录传输命令scp
    Hadoop学习总结:MapReduce的过程解析
    Python 3 的新特性zz
    Tutorial Learn Python in 10 minutes[zz]
    Hadoop学习总结:Hadoop的运行痕迹
    Python 绝对简明手册
    Linux命令总结
    [Error] 'strlen' was not declared in this scope
    养成C#编程好习惯
  • 原文地址:https://www.cnblogs.com/Java-biao/p/12591045.html
Copyright © 2011-2022 走看看