反射练习之运行配置文件指定内容

 1 package ClassTest.ClassFieldsTest;
 2 
 3 import java.io.FileReader;
 4 import java.io.IOException;
 5 import java.lang.reflect.Constructor;
 6 import java.lang.reflect.InvocationTargetException;
 7 import java.lang.reflect.Method;
 8 import java.util.Properties;
 9 
10 /**
11  * FileName: ReflectDemo06
12  * Author:   lps
13  * Date:     2022/4/11 22:38
14  * Sign:刘品水 Q:1944900433
15  */
16 public class ReflectDemo06 {
17     public static void main(String[] args) throws IOException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
18 //        Student s = new Student();
19 //        s.study();
20 
21 //        Teacher t = new Teacher();
22 //        t.teach();
23 
24         /*
25             class.txt
26             className=XXX
27             methodName=XXX
28          */
29         
30         //加载数据
31         Properties prop = new Properties();
32         FileReader fr = new FileReader("F:\\JavaCode\\class.txt");
33         //void load(InputStream inStream) 从输入字节流读取属性列表(键和元素对)。
34         //void load(Reader reader) 以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
35         prop.load(fr);
36         fr.close();
37 
38         /*
39             className=ClassTest.ClassFieldsTest.Student
40             methodName=study
41          */
42         //String getProperty(String key) 使用此属性列表中指定的键搜索属性。
43         //String getProperty(String key, String defaultValue) 使用此属性列表中指定的键搜索属性。
44         String className = prop.getProperty("className");
45         String methodName = prop.getProperty("methodName");
46 
47         //通过反射来使用
48         Class<?> c = Class.forName(className);//ClassTest.ClassFieldsTest.Student
49         Constructor<?> con = c.getConstructor();
50         Object obj = con.newInstance();
51         Method m = c.getMethod(methodName);//study
52         m.invoke(obj);
53 
54 
55 
56     }
57 }
package ClassTest.ClassFieldsTest;

/**
 * FileName: Teacher
 * Author:   lps
 * Date:     2022/4/11 22:37
 * Sign:刘品水 Q:1944900433
 */
public class Teacher {
    public void teach() {
        System.out.println("键盘敲烂 月薪过万");
    }
}
package ClassTest.ClassFieldsTest;

/**
 * FileName: Student
 * Author:   lps
 * Date:     2022/4/11 22:36
 * Sign:刘品水 Q:1944900433
 */
public class Student {
    public void study() {
        System.out.println("好好学习 天天向上");
    }
}
className=ClassTest.ClassFieldsTest.Teacher
methodName=teach

 

 

posted @ 2022-04-12 12:09  刘品水  阅读(29)  评论(0编辑  收藏  举报