Java反射工具类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
    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, 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    构造函数的参数    
            * 如果无构造参数,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;  
           }  
    }  

标签: ssl

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:创建DOM元素的通用JS函数

下一篇:用shell扫描局域网所有IP的MAC地址