【前言】
假如大家要做一些模型绑定,模型设置,自定义表单之类的话,那么对某个实体类的类型的判断肯定是必不可少的了。
本人整理了一份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
}