public FieldDeserializer2 create()

in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/FieldDeserializer2FactoryUnsafe.java [127:185]


    public FieldDeserializer2 create(Field field) {
        if (Modifier.isTransient(field.getModifiers())
                || Modifier.isStatic(field.getModifiers())) {
            return NullFieldDeserializer.DESER;
        }

    /*
    // XXX: could parameterize the handler to only deal with public
    try {
      field.setAccessible(true);
    } catch (Throwable e) {
      e.printStackTrace();
    }
    */

        Class<?> type = field.getType();
        FieldDeserializer2 deser;

        if (String.class.equals(type)) {
            deser = new StringFieldDeserializer(field);
        } else if (byte.class.equals(type)) {
            deser = new ByteFieldDeserializer(field);
        } else if (char.class.equals(type)) {
            deser = new CharFieldDeserializer(field);
        } else if (short.class.equals(type)) {
            deser = new ShortFieldDeserializer(field);
        } else if (int.class.equals(type)) {
            deser = new IntFieldDeserializer(field);
        } else if (long.class.equals(type)) {
            deser = new LongFieldDeserializer(field);
        } else if (float.class.equals(type)) {
            deser = new FloatFieldDeserializer(field);
        } else if (double.class.equals(type)) {
            deser = new DoubleFieldDeserializer(field);
        } else if (boolean.class.equals(type)) {
            deser = new BooleanFieldDeserializer(field);
        } else if (java.sql.Date.class.equals(type)) {
            deser = new SqlDateFieldDeserializer(field);
        } else if (java.sql.Timestamp.class.equals(type)) {
            deser = new SqlTimestampFieldDeserializer(field);
        } else if (java.sql.Time.class.equals(type)) {
            deser = new SqlTimeFieldDeserializer(field);
        }
        // support generic type of map
        else if (Map.class.equals(type)
                && field.getGenericType() != field.getType()) {
            deser = new ObjectMapFieldDeserializer(field);
        } else if (List.class.equals(type)
                && field.getGenericType() != field.getType()) {
            deser = new ObjectListFieldDeserializer(field);
        } else if (Set.class.equals(type)
                && field.getGenericType() != field.getType()) {
            deser = new ObjectSetFieldDeserializer(field);
        } else {
            deser = new ObjectFieldDeserializer(field);
        }

        return deser;
    }