加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java反射工具类

发布时间:2020-12-15 00:13:40 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.lang.reflect.Array; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTar

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    import java.lang.reflect.Array;         
    import java.lang.reflect.Constructor;         
    import java.lang.reflect.Field;         
    import java.lang.reflect.InvocationTargetException;  
    import java.lang.reflect.Method;  
      
    public class 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,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    构造函数的参数    
            * 如果无构造参数,args 填写为 null   
            * @return 新建的实例      
            * @throws Exception      
            */        
           public Object newInstance(String className,Object[] args,Class[] argsType) throws NoSuchMethodException,SecurityException,ClassNotFoundException,InstantiationException,IllegalAccessException,IllegalArgumentException,InvocationTargetException   
     {         
               Class newoneClass = Class.forName(className);         
      
               if(args == null){     
                   return newoneClass.newInstance();     
      
              }else{     
    //             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);    
                  Constructor cons = newoneClass.getConstructor(argsType);  
      
                   return cons.newInstance(args);        
               }     
      
           }         
      
      
      
            /**      
            * 是不是某个类的实例      
            * @param obj 实例      
            * @param cls 类      
            * @return 如果 obj 是此类的实例,则返回 true      
            */        
           public boolean 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);         
           }    
             
           public Class<?> GetClassListByPackage(String pPackage) {  
               Package _Package = Package.getPackage(pPackage);  
               Class<?> _List =   _Package.getClass();  
                 
               return _List;  
           }  
    }  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读