1、通过反射运行配置文件的内容
测试类:
package cn.refTest;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;
public class Test {
public static void main(String[] args) throws Exception {
//加载配置文件
Properties p =new Properties();
FileReader fr =new FileReader("class.properties");
p.load(fr);
fr.close();
//获取数据
String className = p.getProperty("className");
String methodName = p.getProperty("methodName");
//反射
Class c = Class.forName(className);
Constructor con = c.getConstructor();
Object obj = con.newInstance();
//调用方法
Method m = c.getMethod(methodName);
m.invoke(obj);
}
}
Student类:
package cn.refTest;
public class Student {
public void show(){
System.out.println("学习");
}
}
Teacher类:
package cn.refTest;
public class Teacher {
public void show(){
System.out.println("授课");
}
}
Worker类
package cn.refTest;
public class Worker {
public void show(){
System.out.println("工作");
}
}
配置文件:
className=cn.refTest.Student
methodName=show
2、给定ArrayList<Integer>的一个对象,在这个集合中添加一个字符串。
/*
* ArrayList原始的add方法是Object类型
* 所以拿到它的字节码文件对象,通过反射就可以将字符串放进去
*/
package cn.refTest2;
import java.lang.reflect.Method;
import java.util.ArrayList;
public class ArrayListTest {
public static void main(String[] args) throws Exception {
ArrayList<Integer> array = new ArrayList<Integer>();
Class c = array.getClass();
Method m = c.getMethod("add", Object.class);
m.invoke(array, "hello");// 调用array的add方法,传入的值是hello
m.invoke(array, "java");
System.out.println(array);
}
}
|
|