您的位置:首页 > 编程语言 > Java开发

Java 反射读取配置文件及反射类

2009-03-25 11:44 405 查看
工程下载地址:http://download.csdn.net/source/813185

package test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
try {
String path = System.getProperty("user.dir")+"/src/test/myFile.properties";
FileInputStream in=new FileInputStream(path);
Properties per=new Properties();
per.load(in);

String myclass=per.getProperty("myclass");
String m1=per.getProperty("Method1");
String m2=per.getProperty("Method2");

Object obj=Class.forName(myclass).newInstance();

// 得到类的路径
System.out.println(obj.getClass());

// 获得该类的所有属性
Field [] f=obj.getClass().getDeclaredFields();

for (int i = 0; i < f.length; i++) {
System.out.println(f[i].getName());
}

// 获得该类的所有方法
Method [] m=obj.getClass().getMethods();

for (int i = 0; i < m.length; i++) {
System.out.println(m[i].getName());
}

// 执行该类的 m1 方法
Method md=obj.getClass().getMethod(m1, new Class[] {String.class});
md.invoke(obj, new Object[]{"Java"});

// 执行该类的 m2 方法
md=obj.getClass().getMethod(m2, null);
String str=(String)md.invoke(obj,null);
System.out.println(str);

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


这个工程是使用 java 来使用反射的原理读取 *.proproies 或者是 *.xml 资源文件中的一些配置信息。利用此方法可以在没有使用框架的情况下可以让你的程序更加灵活易于修改。如:可以将一些数据库配置信息,重要信息写入到资源文件中,在使用反射来读取这些信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: