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

王朝学院·作者佚名  2009-03-27
窄屏简体版  字體:   |    |    |  超大  

工程下载地址:http://download.csdn.net/source/813185

+ expand sourceview plaincopy to clipboardprint?

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150

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();

}

}

}

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 资源文件中的一些配置信息。利用此方法可以在没有使用框架的情况下可以让你的程序更加灵活易于修改。如:可以将一些数据库配置信息,重要信息写入到资源文件中,在使用反射来读取这些信息。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航