code: public static <T> T convert(final Object obj, final Class<? extends T> targetClass) {
          //        if (obj == null) {
          //            return defaultValueOf(targetClass);
          //        }
          //
          //        final Class<?> srcPropClass = obj.getClass();
          //
          //        if (targetClass.isAssignableFrom(srcPropClass)) {
          //            return (T) obj;
          //        }
          //
          //        final Type<Object> targetPropType = targetClass.isEnum()
          //                ? getType(getCanonicalClassName(targetClass) + "(" + Integer.class.isAssignableFrom(srcPropClass) + ")") : N.getType(targetClass);
          //        final Type<Object> srcPropType = getType(srcPropClass);
          //
          //        if (targetPropType.isBoolean() && srcPropType.isNumber()) {
          //            return (T) ((Boolean) (((Number) obj).longValue() > 0));
          //        }
          //
          //        if (targetPropType.isEntity() && srcPropType.isMap()) {
          //            return map2Entity(targetClass, (Map<String, Object>) obj);
          //        } else if (targetPropType.isMap() && srcPropType.isEntity()) {
          //            try {
          //                return (T) entity2Map((Map<String, Object>) N.newInstance(targetClass), obj);
          //            } catch (Exception e) {
          //                // ignore.
          //            }
          //        } else if (targetPropType.isEntity() && srcPropType.isEntity()) {
          //            return copy(targetClass, obj);
          //        }
          //
          //        return (T) targetPropType.valueOf(srcPropType.stringOf(obj));
  
          final Type<T> type = typeOf(targetClass);
          return convert(obj, type);
      }
docs: Try to convert the specified {@code obj} to the specified
  {@code targetClass}. Default value of {@code targetClass} is returned if
  {@code sourceObject} is null. An instance of {@code targetClass} is returned if
  convert successfully
  
  @param obj
  @param targetClass
  @return