网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Java反射经典实例JavaReflectionCookbook

http://www.duduwolf.com/wiki/2006/85.html[@more@]import java.lang.reflect.Array;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;

/**
* Java Reflection Cookbook
*
*@author Michael Lee
*@since 2006-8-23
*@version 0.1a
*/
publicclass Reflection {
/**
* 得到某个对象的公共属性
*
*@param owner, fieldName
*@return 该属性对象
*@throws Exception
*
*/
public Object getProperty(Object owner, String fieldName)throws Exception {
Class ownerClass= owner.getClass();

Field field= ownerClass.getField(fieldName);

Object property= field.get(owner);

return property;
}

/**
* 得到某类的静态公共属性
*
*@param className 类名
*@param fieldName 属性名
*@return 该属性对象
*@throws Exception
*/
public Object getStaticProperty(String className, String fieldName)
throws Exception {
Class ownerClass= Class.forName(className);

Field field= ownerClass.getField(fieldName);

Object property= field.get(ownerClass);

return property;
}


/**
* 执行某对象方法
*
*@param owner
* 对象
*@param methodName
* 方法名
*@param args
* 参数
*@return 方法返回值
*@throws Exception
*/
public Object invokeMethod(Object owner, String methodName, Object[] args)
throws Exception {

Class ownerClass= owner.getClass();

Class[] argsClass=new Class[args.length];

for (int i=0, j= args.length; i< j; i++) {
argsClass[i]= args[i].getClass();
}

Method method= ownerClass.getMethod(methodName, argsClass);

return method.invoke(owner, args);
}


/**
* 执行某类的静态方法
*
*@param className
* 类名
*@param methodName
* 方法名
*@param args
* 参数数组
*@return 执行方法返回的结果
*@throws Exception
*/
public Object invokeStaticMethod(String className, String methodName,
Object[] args)throws Exception {
Class ownerClass= Class.forName(className);

Class[] argsClass=new Class[args.length];

for (int i=0, j= args.length; i< j; i++) {
argsClass[i]= args[i].getClass();
}

Method method= ownerClass.getMethod(methodName, argsClass);

return method.invoke(null, args);
}



/**
* 新建实例
*
*@param className
* 类名
*@param args
* 构造函数的参数
*@return 新建的实例
*@throws Exception
*/
public Object newInstance(String className, Object[] args)throws Exception {
Class newoneClass= Class.forName(className);

Class[] argsClass=new Class[args.length];

for (int i=0, j= args.length; i< j; i++) {
argsClass[i]= args[i].getClass();
}

Constructor cons= newoneClass.getConstructor(argsClass);

return cons.newInstance(args);

}



/**
* 是不是某个类的实例
*@param obj 实例
*@param cls 类
*@return 如果 obj 是此类的实例,则返回 true
*/
publicboolean isInstance(Object obj, Class cls) {
return cls.isInstance(obj);
}

/**
* 得到数组中的某个元素
*@param array 数组
*@param index 索引
*@return 返回指定数组对象中索引组件的值
*/
public Object getByArray(Object array,int index) {
return Array.get(array,index);
}
}
文章标题:Java反射经典实例JavaReflectionCookbook
网站URL:http://bjjierui.cn/article/ppgdjh.html

其他资讯