【java】动态获取常见类型

来源:互联网 发布:手机桌面课程表软件 编辑:程序博客网 时间:2024/04/28 12:17

【前言】

假如大家要做一些模型绑定,模型设置,自定义表单之类的话,那么对某个实体类的类型的判断肯定是必不可少的了。

本人整理了一份java常见的类型的判断,大约可以识别几种list类型,enum,Integer,string,datetime等常见类型,代码如下:

package CodeGen;import CodeGen.Utils.JAVA.*;import java.lang.reflect.Field;public class ParameterHelper {    /**     * 这个是使用用于普通方式的参数(enum的话需要另外处理---搞不好会出现无限遍历)     * */    public static FormParameter getParameterMeta(Field tfiled){        Object t1=  tfiled.getGenericType();        String GenericTypeStr=tfiled.getGenericType().toString();        FormParameter paraMeta=new FormParameter();        if(tfiled.isEnumConstant()){            paraMeta.typeName="Enum";            paraMeta.objectType= JavaDataType.ENUM;            return paraMeta;        }        //--判断开始【基础类型】        //--普通字符串。        if(GenericTypeStr.equals("class java.lang.String")){            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.String;")){            paraMeta.arrayType= ArrayType.Type_Noraml;            paraMeta.isArray=true;            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.String>")){            paraMeta.arrayType= ArrayType.Type_List;            paraMeta.isArray=true;            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.String>")){            paraMeta.arrayType= ArrayType.Type_ArrayList;            paraMeta.isArray=true;            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.String>")){            paraMeta.arrayType= ArrayType.Type_LinkedList;            paraMeta.isArray=true;            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.String>")){            paraMeta.arrayType= ArrayType.Type_Vector;            paraMeta.isArray=true;            paraMeta.objectType= JavaDataType.STRING;            paraMeta.typeName="String";            return paraMeta;        }        //---判断int,整数i        else if(GenericTypeStr.equals("int")){            paraMeta.objectType= JavaDataType.INTEGER;            paraMeta.typeName="int";            return paraMeta;        }        else if(GenericTypeStr.equals("class [I")){            paraMeta.objectType= JavaDataType.INTEGER;            paraMeta.typeName="int";            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Integer")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Integer;")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Integer>")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Integer>")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Integer>")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Integer>")){                       paraMeta.typeName="Integer";            paraMeta.objectType=JavaDataType.INTEGER;            paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断float,浮点数        else if(GenericTypeStr.equals("float")){            paraMeta.objectType = JavaDataType.FLOAT;            paraMeta.typeName="float";                        return paraMeta;        }        else if(GenericTypeStr.equals("class [F")){            paraMeta.objectType = JavaDataType.FLOAT;            paraMeta.typeName="float";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Float")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Float;")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Float>")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Float>")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Float>")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Float>")){            paraMeta.typeName="Float";            paraMeta.objectType=JavaDataType.FLOAT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断double,浮点数        else if(GenericTypeStr.equals("double")){            paraMeta.objectType = JavaDataType.DOUBLE;            paraMeta.typeName="double";                         return paraMeta;        }        else if(GenericTypeStr.equals("class [D")){            paraMeta.objectType = JavaDataType.DOUBLE;            paraMeta.typeName="double";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Double")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Double;")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Double>")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Double>")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Double>")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Double>")){            paraMeta.typeName="Double";            paraMeta.objectType=JavaDataType.DOUBLE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断数字,short,整数        else if(GenericTypeStr.equals("short")){            paraMeta.objectType = JavaDataType.SHORT;            paraMeta.typeName="short";                         return paraMeta;        }        else if(GenericTypeStr.equals("class [S")){            paraMeta.objectType = JavaDataType.SHORT;            paraMeta.typeName="short";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Short")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Short;")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Short>")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Short>")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Short>")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Short>")){            paraMeta.typeName="Short";            paraMeta.objectType=JavaDataType.SHORT;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断byte,字节        else if(GenericTypeStr.equals("byte")){            paraMeta.objectType = JavaDataType.BYTE;            paraMeta.typeName="byte";                         return paraMeta;        }        else if(GenericTypeStr.equals("class [B")){            paraMeta.objectType = JavaDataType.BYTE;            paraMeta.typeName="byte";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Byte")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Byte;")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Byte>")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Byte>")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Byte>")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Byte>")){            paraMeta.typeName="Byte";            paraMeta.objectType=JavaDataType.BYTE;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断long,长整数        else if(GenericTypeStr.equals("long")){            paraMeta.objectType = JavaDataType.LONG;            paraMeta.typeName="long";                         return paraMeta;        }        else if(GenericTypeStr.equals("class [J")){            paraMeta.objectType = JavaDataType.LONG;            paraMeta.typeName="long";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Long")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Long;")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Long>")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Long>")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Long>")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Long>")){            paraMeta.typeName="Long";            paraMeta.objectType=JavaDataType.LONG;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--判断boolean,布尔值        else if(GenericTypeStr.equals("boolean")){            paraMeta.objectType = JavaDataType.BOOLEAN;            paraMeta.typeName="boolean";                         return paraMeta;        }        else if(GenericTypeStr.equals("class [Z")){            paraMeta.objectType = JavaDataType.BOOLEAN;            paraMeta.typeName="boolean";                         paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("class java.lang.Boolean")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.lang.Boolean;")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.lang.Boolean>")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.lang.Boolean>")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.lang.Boolean>")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.lang.Boolean>")){            paraMeta.typeName="Boolean";            paraMeta.objectType=JavaDataType.BOOLEAN;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }//--日期        else if(GenericTypeStr.equals("class java.util.Date")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       return paraMeta;        }        else if(GenericTypeStr.equals("class [Ljava.util.Date;")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Noraml;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.List<java.util.Date>")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_List;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.ArrayList<java.util.Date>")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_ArrayList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.LinkedList<java.util.Date>")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_LinkedList;            return paraMeta;        }        else if(GenericTypeStr.equals("java.util.Vector<java.util.Date>")){            paraMeta.typeName="Date";            paraMeta.objectType=JavaDataType.DATETIME;                       paraMeta.isArray=true;            paraMeta.arrayType=ArrayType.Type_Vector;            return paraMeta;        }        //--假如这些都不是,那么就看看符不符合自定义类型        else{            if(GenericTypeStr.indexOf("class ")==0&&GenericTypeStr.indexOf("class [L")==-1){                //--第一种形式,单独一个类                String _classPath=GenericTypeStr.substring(0+"class ".length(),GenericTypeStr.length());          paraMeta.objectType=JavaDataType.CustomObject;                                paraMeta.classPath=_classPath;                paraMeta.typeName=_classPath.substring(_classPath.lastIndexOf('.')+1);                return paraMeta;            }            else if(GenericTypeStr.indexOf("class [L")==0){                String _classPath=GenericTypeStr.substring("class [L".length(),GenericTypeStr.lastIndexOf(";"));          paraMeta.objectType=JavaDataType.CustomObject;                paraMeta.classPath=_classPath;                paraMeta.isArray=true;                paraMeta.arrayType=ArrayType.Type_Noraml;                paraMeta.typeName=_classPath.substring(_classPath.lastIndexOf('.')+1);                return paraMeta;            }            else if(GenericTypeStr.indexOf("java.util.List<")==0){                String _classPath=GenericTypeStr.substring("java.util.List<".length(),GenericTypeStr.lastIndexOf(">"));          paraMeta.objectType=JavaDataType.CustomObject;                paraMeta.classPath=_classPath;                paraMeta.isArray=true;                paraMeta.arrayType=ArrayType.Type_List;                paraMeta.typeName=_classPath.substring(_classPath.lastIndexOf('.')+1);                return paraMeta;            }            else if(GenericTypeStr.indexOf("java.util.ArrayList<")==0){                String _classPath=GenericTypeStr.substring("java.util.ArrayList<".length(),GenericTypeStr.lastIndexOf(">"));          paraMeta.objectType=JavaDataType.CustomObject;                paraMeta.classPath=_classPath;                paraMeta.isArray=true;                paraMeta.arrayType=ArrayType.Type_ArrayList;                paraMeta.typeName=_classPath.substring(_classPath.lastIndexOf('.')+1);                return paraMeta;            }            else if(GenericTypeStr.indexOf("java.util.LinkedList<")==0){                String _classPath=GenericTypeStr.substring("java.util.LinkedList<".length(),GenericTypeStr.lastIndexOf(">"));          paraMeta.objectType=JavaDataType.CustomObject;                paraMeta.classPath=_classPath;                paraMeta.isArray=true;                paraMeta.arrayType=ArrayType.Type_LinkedList;                paraMeta.typeName=_classPath.substring(_classPath.lastIndexOf('.')+1);                return paraMeta;            }            else if(GenericTypeStr.indexOf("java.util.Vector<")==0){                String _classPath=GenericTypeStr.substring("java.util.Vector<".length(),GenericTypeStr.lastIndexOf(">"));          paraMeta.objectType=JavaDataType.CustomObject;                paraMeta.classPath=_classPath;                paraMeta.isArray=true;                paraMeta.arrayType=ArrayType.Type_Vector;                paraMeta.typeName=tfiled.getClass().getName();                return paraMeta;            }            else{                /*------------假如都不是的话,那么就无法识别吧。-------------*/                paraMeta.objectType =JavaDataType.UNKNOWN;                paraMeta.arrayType=ArrayType.None;                paraMeta.isArray=false;                return paraMeta;            }        }    }}

package CodeGen.Utils.JAVA;import CodeGen.JavaDataType;import CodeGen.Utils.Annotations.UI;import java.util.ArrayList;import java.util.LinkedHashMap;/** * Created with IntelliJ IDEA. * User: Administrator * Date: 13-5-13 * Time: 下午10:59 * To change this template use File | Settings | File Templates. */public class FormParameter {    public String parameterName;    public UI displayType=UI.Text;    public String name_ZH="";    public String defaultValue="";    public JavaDataType objectType=JavaDataType.UNKNOWN;    public ParameterMeta parameterMeta=new ParameterMeta();    public String classPath="";    public String typeName="";    public boolean isArray=false;    public ArrayType arrayType=ArrayType.None;    public LinkedHashMap<String,ExtUI> extuiList=new LinkedHashMap<String, ExtUI>();    public String getDefaultValue(){        return defaultValue;    }    public LinkedHashMap<String,ValidateInput> validatelist=new LinkedHashMap<String, ValidateInput>();    public String getParameterName(){        return parameterName;    }    public UI getDisplayType(){        return displayType;    }    public String getName_ZH(){        return name_ZH;    }    public LinkedHashMap<String,ValidateInput> getValidatelist(){        return validatelist;    }    public LinkedHashMap<String,ExtUI> getExtUIList(){        return extuiList;    }    public ArrayList<FormParameter> childList=new ArrayList<FormParameter>();    public ArrayList<FormParameter> getChildList(){        return childList;    }    public JavaDataType getObjectType() {        return objectType;    }    public String getClassPath() {        return classPath;    }    public String getTypeName() {        return typeName;    }    public boolean isArray() {        return isArray;    }    public ArrayType getArrayType() {        return arrayType;    }}


package CodeGen;public enum JavaDataType {    UNKNOWN,    INTEGER,    STRING,    SHORT,    LONG,    FLOAT,    DOUBLE,    BOOLEAN,    DATETIME,    BYTE,    ENUM,    CustomObject}


原创粉丝点击