zoukankan      html  css  js  c++  java
  • 反射的一些基础操作

    package Util;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.util.HashMap;
    import java.util.Map;
    
    public class ClassUtil {
        /**
         * 获输入一个对象得其类名
         * @param obj
         * @return
         */
        public static String getClassName(Object obj){
            return obj.getClass().getName();
        }
        
        public static void printMethods(Object obj){
            Class c=obj.getClass();
            //获得其类方法 与其父类方法
            Method[] methods=c.getMethods();
            
            //如果需要获得本类方法则使用    c.getDeclaredMethods();
            //如果需要获得构造方法则使用    c.getConstructors();
            System.out.println("该类含有方法为:");
            Class[] c2=null;
            int i=0;
            for(Method m:methods){
                i++;
                c2=null;
                System.out.print(i+"(");
                System.out.print("方法名:"+m.getName()+";");
                System.out.print("返回值类型:"+m.getReturnType()+";");
                c2=m.getParameterTypes();
                System.out.print("参数类型:");
                for(int j=0;j<c2.length;j++){
                    System.out.print(j+" "+c2.getClass().getName()+" ");
                }
                System.out.println(")");
            }
        }
        /**
         * 获得一个类的所有成员变量
         * @param obj
         * @return
         */
         public Map getClassFields(Object obj){
             Map maps=new HashMap();
             Class c=obj.getClass();
             Field[] fields=c.getDeclaredFields();
             String fieldType="";
             String fieldName="";
             for(Field fieid:fields){
                 fieldType=fieid.getType().getName();
                 fieldName=fieid.getName();
                 maps.put(fieldName, fieldType);
             }
            return maps;
         }
    }

    反射可以通过这一系列方法对一个不知道是什么的对象进行一系列操作比如万用的toString,比如构建万用的SQL语句(前提是数据库中的列名表名跟属性名对象名相同),比如执行万用的SQL之后是不是也可以返回一个对象而不是一堆需要重新处理的参数。

    反射的应用讲究在不知道是什么的情况下进行操作,抽象化,通用化,利于构建框架,常用工具

  • 相关阅读:
    AppleScript
    iOS 架构之文件结构
    Swift
    ERROR ITMS-90032: "Invalid Image Path
    ios中微信原生登陆的坑,ShareSDK的坑
    ios中OC给js传值的方法
    mac电脑中xcode怎么恢复还原快捷键设置
    ios 中 数组、字典转成json格式上传到后台,遇到的问题
    ios 中长按图片或者二维码,保存图片到手机的方法
    ios 中 Plus屏幕适配的问题,xib创建的cell在 Plus出现被拉大的情况
  • 原文地址:https://www.cnblogs.com/blackdeng/p/6889618.html
Copyright © 2011-2022 走看看