【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}
- 【java】动态获取常见类型
- 动态类型获取
- java异常常见类型
- 常见java异常类型
- java常见类型转换
- Java常见类型转换
- java动态类型安全
- JAVA常见的异常类型
- java常见包名类型
- java获取时间类型
- java获取对象类型
- java获取图片类型
- java获取父类范型类型
- 获取常见Java系统属性
- java静态类型与动态类型
- java字符串编码类型获取
- java字符串编码类型获取
- java字符串编码类型获取
- 让destoon去掉跟下的member
- 【图文解析笔记本电池深度放电】
- jquery easyui提交数据乱码现象
- Grand Central Dispatch(GCD)编程基础
- ykcchf 2013 v2.1101 最新版下载
- 【java】动态获取常见类型
- Objective-C中的KVC与KVO(上)
- 使用Spring MVC 搭建Rest服务
- C语言中的setjmp和longjmp函数
- WPF中Polyline拐角的bug
- 关于【java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLog】的错误解决办法
- HDU 数塔
- FreeEIM 小插件 dwzjzx v2.1001 2013 下载
- 横评美国IaaS“8匹狼”:AWS、GCE、Azure、Rackspace、SoftLayer、Dell、HP、Joyent