现在的位置: 首页 > 综合 > 正文

Java Class 映射及实用工具类完整源代码

2012年11月07日 ⁄ 综合 ⁄ 共 4680字 ⁄ 字号 评论关闭
 

package com.elink.util;

/*

 * <p>Company: 凌科软件 www.elingke.com </p>

 * @author liubaojun

 * @version 1.0

 * Created on 2004-11-29

 * 来源于 elinkBSP 部分源代码

 */

import java.lang.reflect.*;

import java.net.*;

public class ClassUtil

{

 /**

   @param strClassName

   @param argsType

   @param args

   @return Object

   @throws java.lang.NoSuchMethodException

   @throws java.lang.SecurityException

   @throws java.lang.ClassNotFoundException

   @throws java.lang.InstantiationException

   @throws java.lang.IllegalAccessException

   @throws java.lang.IllegalArgumentException

   @throws java.lang.reflect.InvocationTargetException

  */

 public static Object loadClass(String strClassName, Class[] argsType,

       Object[] args)

  throws NoSuchMethodException, SecurityException, ClassNotFoundException,

  InstantiationException, IllegalAccessException,

  IllegalArgumentException, InvocationTargetException

 {

  Object returnObj = null;

  Class className = null;

  Constructor constructor = null;

  className = Class.forName(strClassName);

  constructor = className.getConstructor(argsType);

  returnObj = constructor.newInstance(args);

  return returnObj;

 }

 /**

   @param strClassName

   @return Object

   @throws java.lang.NoSuchMethodException

   @throws java.lang.SecurityException

   @throws java.lang.ClassNotFoundException

   @throws java.lang.InstantiationException

   @throws java.lang.IllegalAccessException

   @throws java.lang.IllegalArgumentException

   @throws java.lang.reflect.InvocationTargetException

  */

 public static Object loadClass(String strClassName)

  throws NoSuchMethodException, SecurityException, ClassNotFoundException,

  InstantiationException, IllegalAccessException,

  IllegalArgumentException, InvocationTargetException

 {

  return loadClass(strClassName, null, null);

 }

 

 public static Object loadClass(String strClassName, Object defObj)

 {

  try

  {

   return loadClass(strClassName, null, null);

  }

  catch( Throwable ex )

  {

   LogUtil.logException( ex );

  }

  return defObj;

 }

 /**

   @param classObject

   @param strMethodName

   @param argsType

   @param args

   @return Object

   @throws java.lang.NoSuchMethodException

   @throws java.lang.SecurityException

   @throws java.lang.IllegalAccessException

   @throws java.lang.IllegalArgumentException

   @throws java.lang.reflect.InvocationTargetException

  */

 public static Object invokeMothod(Object classObject, String strMethodName,

          Class[] argsType, Object[] args)

  throws NoSuchMethodException, SecurityException, IllegalAccessException,

  IllegalArgumentException, InvocationTargetException

 {

  Method concatMethod = classObject.getClass().getMethod(strMethodName,

   argsType);

  return concatMethod.invoke(classObject, args);

 }

 /**

   @param classObject

   @param strMethodName

   @return Object

   @throws java.lang.NoSuchMethodException

   @throws java.lang.SecurityException

   @throws java.lang.IllegalAccessException

   @throws java.lang.IllegalArgumentException

   @throws java.lang.reflect.InvocationTargetException

  */

 public static Object invokeMothod(Object classObject, String strMethodName)

  throws NoSuchMethodException, SecurityException, IllegalAccessException,

  IllegalArgumentException, InvocationTargetException

 {

  return invokeMothod(classObject, strMethodName, null, null);

 }

 /**

   @param classObject

   @param strFieldName

   @return Object

   @throws java.lang.NoSuchFieldException

   @throws java.lang.SecurityException

   @throws java.lang.IllegalArgumentException

   @throws java.lang.IllegalAccessException

  */

 public static Object getFieldValue(Object classObject, String strFieldName)

  throws NoSuchFieldException, SecurityException,

  IllegalArgumentException, IllegalAccessException

 {

  Object retObj = null;

  Field field;

  field = classObject.getClass().getDeclaredField(strFieldName);

  retObj = field.get(classObject);

  return retObj;

 }

 /**

   @param className

   @return String

  */

 public static String whereClass(String className)

 {

  String retStr = null;

  if (!className.startsWith("/"))

  {

   className = "/" + className;

  }

  className = className.replace('.', '/');

  className = className + ".class";

  java.net.URL classUrl = getResource(className);

  if (classUrl != null)

  {

   String str = classUrl.getFile();

   retStr = str;

  }

  return retStr;

 }

 /**

   @param name

   @return java.net.URL

  */

 public static URL getResource(String name)

 {

  return ClassUtil.class.getResource(name);

 }

 

 public static void compiler( String targetDir, String filename, String classpath ) throws Exception

 {

//   javac -d E:/test  -classpath C:\work\WEB-INF\lib\bss.jar e:/test/TestVector.java

  String str = "javac -d "+targetDir+" -classpath "+classpath+" "+filename;

  LogUtil.logInfo( str );

  Runtime runtime = Runtime.getRuntime();

  Process p = runtime.exec( str );

 }

 

 public static void compiler( String targetDir, String filename ) throws Exception

 {

//   javac -d E:/test  -classpath C:\work\WEB-INF\lib\bss.jar e:/test/TestVector.java

  Runtime runtime = Runtime.getRuntime();

  Process p = runtime.exec( "javac -d "+targetDir+" "+filename );

 }

}


抱歉!评论已关闭.