public static ProtobufField create()

in fluss-protogen/fluss-protogen-generator/src/main/java/com/alibaba/fluss/protogen/generator/generator/ProtobufField.java [39:72]


    public static ProtobufField create(Field field, int index, boolean isErrorField) {
        if (field.isRepeated()) {
            if (field.isMessageField()) {
                return new ProtobufRepeatedMessageField((MessageField) field, index);
            } else if (field.isStringField()) {
                return new ProtobufRepeatedStringField((Field.String) field, index);
            } else if (field.isEnumField()) {
                return new ProtobufRepeatedEnumField(field, index);
            } else if (field.isNumberField() || field.isBoolField()) {
                return new ProtobufRepeatedNumberField(field, index);
            } else if (field.isBytesField()) {
                return new ProtobufRepeatedBytesField((Field.Bytes) field, index);
            }
        } else if (field.isMessageField()) {
            return new ProtobufMessageField((MessageField) field, index);
        } else if (field.isBytesField()) {
            if (field.getName().equals(RecordsFieldFinder.RECORDS_FIELD_NAME)) {
                // add zero-copy and lazy deserialization support for "bytes records"
                return new ProtobufRecordsField((Field.Bytes) field, index);
            } else {
                return new ProtobufBytesField((Field.Bytes) field, index);
            }
        } else if (field.isStringField()) {
            return new ProtobufStringField((Field.String) field, index, isErrorField);
        } else if (field.isEnumField()) {
            return new ProtobufEnumField(field, index);
        } else if (field.isNumberField()) {
            return new ProtobufNumberField(field, index, isErrorField);
        } else if (field.isBoolField()) {
            return new ProtobufBooleanField(field, index);
        }

        throw new IllegalArgumentException("Unknown field: " + field);
    }