反射练习之运行配置文件指定内容
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