79533862

Date: 2025-03-25 13:50:40
Score: 2
Natty:
Report link

Thanks @harel for the answer, you can also set the key/value on the MapEntry without casting it by setting the fields using the field numbers:

if (field.isMapField()) {
    Descriptors.Descriptor messageType = field.getMessageType();
    // see com.google.protobuf.MapEntryLite for field numbers
    Descriptors.FieldDescriptor keyField = messageType.findFieldByNumber(KEY_FIELD_NUMBER); // KEY_FIELD_NUMBER = 1
    Descriptors.FieldDescriptor valueField = messageType.findFieldByNumber(VALUE_FIELD_NUMBER); // VALUE_FIELD_NUMBER = 2
    Message.Builder entryBuilder = builder.newBuilderForField(field);
    entryBuilder.setField(keyField, key);
    entryBuilder.setField(valueField, value);
    builder.addRepeatedField(field, entryBuilder.build());
}
Reasons:
  • Blacklisted phrase (0.5): Thanks
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @harel
  • Looks like a comment (1):
  • Low reputation (0.5):
Posted by: jazd