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