public static TypeInfo getTypeInfo(Class<?> type,Type genericType) { MTypeKind kind = null; Class<?> elementType = null; TypeInfo elementTypeInfo = null; if(isSimpleType(type, genericType)){ kind = MTypeKind.SIMPLE; }else if(isCollectionType(type, genericType)){ kind = MTypeKind.COLLECTION; elementType = getElementType(type, genericType); elementTypeInfo = getTypeInfo(elementType, null); }else{ kind = MTypeKind.COMPLEX; } return new TypeInfo(type, genericType, kind,elementType,elementTypeInfo); }