WEB开发网
开发学院WEB开发Jsp Java反射读取配置文件及反射类 阅读

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

 2009-03-26 20:56:04 来源:WEB开发网   
核心提示:工程下载地址:http://download.csdn.net/source/813185 + expand sourceview plaincopy to clipboardPRint?·········10········20········30········40········50········60····

工程下载地址: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

  1. package test;  
  2.  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.IOException;  
  6. import java.lang.reflect.Field;  
  7. import java.lang.reflect.InvocationTargetException;  
  8. import java.lang.reflect.Method;  
  9. import java.util.Properties;  
  10.  
  11. public class Test {  
  12.  
  13.   /**  
  14.    * @param args  
  15.    */ 
  16.   public static void main(String[] args) {  
  17.     try {  
  18.       String path = System.getProperty("user.dir")+"/src/test/myFile.properties";  
  19.       FileInputStream in=new FileInputStream(path);  
  20.       Properties per=new Properties();  
  21.       per.load(in);  
  22.  
  23.       String myclass=per.getProperty("myclass");  
  24.       String m1=per.getProperty("Method1");  
  25.       String m2=per.getProperty("Method2");  
  26.         
  27.       Object obj=Class.forName(myclass).newInstance();  
  28.         
  29.       // 得到类的路径  
  30.       System.out.println(obj.getClass());  
  31.         
  32.       // 获得该类的所有属性  
  33.       Field [] f=obj.getClass().getDeclaredFields();  
  34.         
  35.       for (int i = 0; i < f.length; i++) {  
  36.         System.out.println(f[i].getName());  
  37.       }  
  38.         
  39.       // 获得该类的所有方法  
  40.       Method [] m=obj.getClass().getMethods();  
  41.         
  42.       for (int i = 0; i < m.length; i++) {  
  43.         System.out.println(m[i].getName());  
  44.       }  
  45.         
  46.       // 执行该类的 m1 方法  
  47.       Method md=obj.getClass().getMethod(m1, new Class[] {String.class});       
  48.       md.invoke(obj, new Object[]{"Java"});  
  49.         
  50.       // 执行该类的 m2 方法  
  51.       md=obj.getClass().getMethod(m2, null);  
  52.       String str=(String)md.invoke(obj,null);  
  53.       System.out.println(str);  
  54.                 
  55.     } catch (ClassNotFoundException e) {  
  56.       // TODO Auto-generated catch block  
  57.       e.printStackTrace();  
  58.     } catch (InstantiationException e) {  
  59.       // TODO Auto-generated catch block  
  60.       e.printStackTrace();  
  61.     } catch (IllegalaccessException e) {  
  62.       // TODO Auto-generated catch block  
  63.       e.printStackTrace();  
  64.     } catch (SecurityException e) {  
  65.       // TODO Auto-generated catch block  
  66.       e.printStackTrace();  
  67.     } catch (NoSuchMethodException e) {  
  68.       // TODO Auto-generated catch block  
  69.       e.printStackTrace();  
  70.     } catch (IllegalArgumentException e) {  
  71.       // TODO Auto-generated catch block  
  72.       e.printStackTrace();  
  73.     } catch (InvocationTargetException e) {  
  74.       // TODO Auto-generated catch block  
  75.       e.printStackTrace();  
  76.     } catch (FileNotFoundException e) {  
  77.       // TODO Auto-generated catch block  
  78.       e.printStackTrace();  
  79.     } catch (IOException e) {  
  80.       // TODO Auto-generated catch block  
  81.       e.printStackTrace();  
  82.     }  
  83.  
  84.   }  
  85.  
  86. } 

这个工程是使用 java 来使用反射的原理读取 *.proproies 或者是 *.xml 资源文件中的一些配置信息。利用此方法可以在没有使用框架的情况下可以让你的程序更加灵活易于修改。如:可以将一些数据库配置信息,重要信息写入到资源文件中,在使用反射来读取这些信息。

Tags:Java 反射 读取

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接