Package com.google.protobuf
Class DescriptorProtos.FieldDescriptorProto.Builder
java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder<MessageType,BuilderType>
com.google.protobuf.GeneratedMessageLite.Builder<DescriptorProtos.FieldDescriptorProto,DescriptorProtos.FieldDescriptorProto.Builder>
com.google.protobuf.DescriptorProtos.FieldDescriptorProto.Builder
- All Implemented Interfaces:
DescriptorProtos.FieldDescriptorProtoOrBuilder,com.google.protobuf.MessageLite.Builder,com.google.protobuf.MessageLiteOrBuilder,Cloneable
- Enclosing class:
- DescriptorProtos.FieldDescriptorProto
public static final class DescriptorProtos.FieldDescriptorProto.Builder
extends com.google.protobuf.GeneratedMessageLite.Builder<DescriptorProtos.FieldDescriptorProto,DescriptorProtos.FieldDescriptorProto.Builder>
implements DescriptorProtos.FieldDescriptorProtoOrBuilder
Describes a field within a message.Protobuf type
google.protobuf.FieldDescriptorProto-
Field Summary
Fields inherited from class com.google.protobuf.GeneratedMessageLite.Builder
instance -
Method Summary
Modifier and TypeMethodDescriptionFor numeric types, contains the original text representation of the value.For extensions, this is the name of the type being extended.JSON name of this field.optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];optional string name = 1 [json_name = "name"];optional int32 number = 3 [json_name = "number"];If set, gives the index of a oneof in the containing type's oneof_decl list.optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];If true, this is a proto3 "optional".If type_name is set, this need not be set.For message and enum types, this is the name of the type.For numeric types, contains the original text representation of the value.com.google.protobuf.ByteStringFor numeric types, contains the original text representation of the value.For extensions, this is the name of the type being extended.com.google.protobuf.ByteStringFor extensions, this is the name of the type being extended.JSON name of this field.com.google.protobuf.ByteStringJSON name of this field.getLabel()optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];getName()optional string name = 1 [json_name = "name"];com.google.protobuf.ByteStringoptional string name = 1 [json_name = "name"];intoptional int32 number = 3 [json_name = "number"];intIf set, gives the index of a oneof in the containing type's oneof_decl list.optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];booleanIf true, this is a proto3 "optional".getType()If type_name is set, this need not be set.For message and enum types, this is the name of the type.com.google.protobuf.ByteStringFor message and enum types, this is the name of the type.booleanFor numeric types, contains the original text representation of the value.booleanFor extensions, this is the name of the type being extended.booleanJSON name of this field.booleanhasLabel()optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];booleanhasName()optional string name = 1 [json_name = "name"];booleanoptional int32 number = 3 [json_name = "number"];booleanIf set, gives the index of a oneof in the containing type's oneof_decl list.booleanoptional .google.protobuf.FieldOptions options = 8 [json_name = "options"];booleanIf true, this is a proto3 "optional".booleanhasType()If type_name is set, this need not be set.booleanFor message and enum types, this is the name of the type.optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];setDefaultValue(String value) For numeric types, contains the original text representation of the value.setDefaultValueBytes(com.google.protobuf.ByteString value) For numeric types, contains the original text representation of the value.setExtendee(String value) For extensions, this is the name of the type being extended.setExtendeeBytes(com.google.protobuf.ByteString value) For extensions, this is the name of the type being extended.setJsonName(String value) JSON name of this field.setJsonNameBytes(com.google.protobuf.ByteString value) JSON name of this field.optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];optional string name = 1 [json_name = "name"];setNameBytes(com.google.protobuf.ByteString value) optional string name = 1 [json_name = "name"];setNumber(int value) optional int32 number = 3 [json_name = "number"];setOneofIndex(int value) If set, gives the index of a oneof in the containing type's oneof_decl list.optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];setOptions(DescriptorProtos.FieldOptions.Builder builderForValue) optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];setProto3Optional(boolean value) If true, this is a proto3 "optional".If type_name is set, this need not be set.setTypeName(String value) For message and enum types, this is the name of the type.setTypeNameBytes(com.google.protobuf.ByteString value) For message and enum types, this is the name of the type.Methods inherited from class com.google.protobuf.GeneratedMessageLite.Builder
build, buildPartial, clear, clone, copyOnWrite, copyOnWriteInternal, getDefaultInstanceForType, internalMergeFrom, isInitialized, mergeFrom, mergeFrom, mergeFrom, mergeFromMethods inherited from class com.google.protobuf.AbstractMessageLite.Builder
addAll, addAll, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageExceptionMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.google.protobuf.MessageLiteOrBuilder
getDefaultInstanceForType, isInitialized
-
Method Details
-
hasName
public boolean hasName()optional string name = 1 [json_name = "name"];- Specified by:
hasNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the name field is set.
-
getName
optional string name = 1 [json_name = "name"];- Specified by:
getNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The name.
-
getNameBytes
public com.google.protobuf.ByteString getNameBytes()optional string name = 1 [json_name = "name"];- Specified by:
getNameBytesin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The bytes for name.
-
setName
optional string name = 1 [json_name = "name"];- Parameters:
value- The name to set.- Returns:
- This builder for chaining.
-
clearName
optional string name = 1 [json_name = "name"];- Returns:
- This builder for chaining.
-
setNameBytes
public DescriptorProtos.FieldDescriptorProto.Builder setNameBytes(com.google.protobuf.ByteString value) optional string name = 1 [json_name = "name"];- Parameters:
value- The bytes for name to set.- Returns:
- This builder for chaining.
-
hasNumber
public boolean hasNumber()optional int32 number = 3 [json_name = "number"];- Specified by:
hasNumberin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the number field is set.
-
getNumber
public int getNumber()optional int32 number = 3 [json_name = "number"];- Specified by:
getNumberin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The number.
-
setNumber
optional int32 number = 3 [json_name = "number"];- Parameters:
value- The number to set.- Returns:
- This builder for chaining.
-
clearNumber
optional int32 number = 3 [json_name = "number"];- Returns:
- This builder for chaining.
-
hasLabel
public boolean hasLabel()optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];- Specified by:
hasLabelin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the label field is set.
-
getLabel
optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];- Specified by:
getLabelin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The label.
-
setLabel
public DescriptorProtos.FieldDescriptorProto.Builder setLabel(DescriptorProtos.FieldDescriptorProto.Label value) optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];- Parameters:
value- The enum numeric value on the wire for label to set.- Returns:
- This builder for chaining.
-
clearLabel
optional .google.protobuf.FieldDescriptorProto.Label label = 4 [json_name = "label"];- Returns:
- This builder for chaining.
-
hasType
public boolean hasType()If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];- Specified by:
hasTypein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the type field is set.
-
getType
If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];- Specified by:
getTypein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The type.
-
setType
public DescriptorProtos.FieldDescriptorProto.Builder setType(DescriptorProtos.FieldDescriptorProto.Type value) If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];- Parameters:
value- The enum numeric value on the wire for type to set.- Returns:
- This builder for chaining.
-
clearType
If type_name is set, this need not be set. If both this and type_name are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
optional .google.protobuf.FieldDescriptorProto.Type type = 5 [json_name = "type"];- Returns:
- This builder for chaining.
-
hasTypeName
public boolean hasTypeName()For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Specified by:
hasTypeNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the typeName field is set.
-
getTypeName
For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Specified by:
getTypeNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The typeName.
-
getTypeNameBytes
public com.google.protobuf.ByteString getTypeNameBytes()For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Specified by:
getTypeNameBytesin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The bytes for typeName.
-
setTypeName
For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Parameters:
value- The typeName to set.- Returns:
- This builder for chaining.
-
clearTypeName
For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Returns:
- This builder for chaining.
-
setTypeNameBytes
public DescriptorProtos.FieldDescriptorProto.Builder setTypeNameBytes(com.google.protobuf.ByteString value) For message and enum types, this is the name of the type. If the name starts with a '.', it is fully-qualified. Otherwise, C++-like scoping rules are used to find the type (i.e. first the nested types within this message are searched, then within the parent, on up to the root namespace).
optional string type_name = 6 [json_name = "typeName"];- Parameters:
value- The bytes for typeName to set.- Returns:
- This builder for chaining.
-
hasExtendee
public boolean hasExtendee()For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Specified by:
hasExtendeein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the extendee field is set.
-
getExtendee
For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Specified by:
getExtendeein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The extendee.
-
getExtendeeBytes
public com.google.protobuf.ByteString getExtendeeBytes()For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Specified by:
getExtendeeBytesin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The bytes for extendee.
-
setExtendee
For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Parameters:
value- The extendee to set.- Returns:
- This builder for chaining.
-
clearExtendee
For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Returns:
- This builder for chaining.
-
setExtendeeBytes
public DescriptorProtos.FieldDescriptorProto.Builder setExtendeeBytes(com.google.protobuf.ByteString value) For extensions, this is the name of the type being extended. It is resolved in the same manner as type_name.
optional string extendee = 2 [json_name = "extendee"];- Parameters:
value- The bytes for extendee to set.- Returns:
- This builder for chaining.
-
hasDefaultValue
public boolean hasDefaultValue()For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Specified by:
hasDefaultValuein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the defaultValue field is set.
-
getDefaultValue
For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Specified by:
getDefaultValuein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The defaultValue.
-
getDefaultValueBytes
public com.google.protobuf.ByteString getDefaultValueBytes()For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Specified by:
getDefaultValueBytesin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The bytes for defaultValue.
-
setDefaultValue
For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Parameters:
value- The defaultValue to set.- Returns:
- This builder for chaining.
-
clearDefaultValue
For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Returns:
- This builder for chaining.
-
setDefaultValueBytes
public DescriptorProtos.FieldDescriptorProto.Builder setDefaultValueBytes(com.google.protobuf.ByteString value) For numeric types, contains the original text representation of the value. For booleans, "true" or "false". For strings, contains the default text contents (not escaped in any way). For bytes, contains the C escaped value. All bytes >= 128 are escaped.
optional string default_value = 7 [json_name = "defaultValue"];- Parameters:
value- The bytes for defaultValue to set.- Returns:
- This builder for chaining.
-
hasOneofIndex
public boolean hasOneofIndex()If set, gives the index of a oneof in the containing type's oneof_decl list. This field is a member of that oneof.
optional int32 oneof_index = 9 [json_name = "oneofIndex"];- Specified by:
hasOneofIndexin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the oneofIndex field is set.
-
getOneofIndex
public int getOneofIndex()If set, gives the index of a oneof in the containing type's oneof_decl list. This field is a member of that oneof.
optional int32 oneof_index = 9 [json_name = "oneofIndex"];- Specified by:
getOneofIndexin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The oneofIndex.
-
setOneofIndex
If set, gives the index of a oneof in the containing type's oneof_decl list. This field is a member of that oneof.
optional int32 oneof_index = 9 [json_name = "oneofIndex"];- Parameters:
value- The oneofIndex to set.- Returns:
- This builder for chaining.
-
clearOneofIndex
If set, gives the index of a oneof in the containing type's oneof_decl list. This field is a member of that oneof.
optional int32 oneof_index = 9 [json_name = "oneofIndex"];- Returns:
- This builder for chaining.
-
hasJsonName
public boolean hasJsonName()JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Specified by:
hasJsonNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the jsonName field is set.
-
getJsonName
JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Specified by:
getJsonNamein interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The jsonName.
-
getJsonNameBytes
public com.google.protobuf.ByteString getJsonNameBytes()JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Specified by:
getJsonNameBytesin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The bytes for jsonName.
-
setJsonName
JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Parameters:
value- The jsonName to set.- Returns:
- This builder for chaining.
-
clearJsonName
JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Returns:
- This builder for chaining.
-
setJsonNameBytes
public DescriptorProtos.FieldDescriptorProto.Builder setJsonNameBytes(com.google.protobuf.ByteString value) JSON name of this field. The value is set by protocol compiler. If the user has set a "json_name" option on this field, that option's value will be used. Otherwise, it's deduced from the field's name by converting it to camelCase.
optional string json_name = 10 [json_name = "jsonName"];- Parameters:
value- The bytes for jsonName to set.- Returns:
- This builder for chaining.
-
hasOptions
public boolean hasOptions()optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];- Specified by:
hasOptionsin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the options field is set.
-
getOptions
optional .google.protobuf.FieldOptions options = 8 [json_name = "options"];- Specified by:
getOptionsin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The options.
-
setOptions
public DescriptorProtos.FieldDescriptorProto.Builder setOptions(DescriptorProtos.FieldOptions value) optional .google.protobuf.FieldOptions options = 8 [json_name = "options"]; -
setOptions
public DescriptorProtos.FieldDescriptorProto.Builder setOptions(DescriptorProtos.FieldOptions.Builder builderForValue) optional .google.protobuf.FieldOptions options = 8 [json_name = "options"]; -
mergeOptions
public DescriptorProtos.FieldDescriptorProto.Builder mergeOptions(DescriptorProtos.FieldOptions value) optional .google.protobuf.FieldOptions options = 8 [json_name = "options"]; -
clearOptions
optional .google.protobuf.FieldOptions options = 8 [json_name = "options"]; -
hasProto3Optional
public boolean hasProto3Optional()If true, this is a proto3 "optional". When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must be belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a "synthetic" oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all "real" oneofs. For message fields, proto3_optional doesn't create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote "optional" or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can't tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
optional bool proto3_optional = 17 [json_name = "proto3Optional"];- Specified by:
hasProto3Optionalin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- Whether the proto3Optional field is set.
-
getProto3Optional
public boolean getProto3Optional()If true, this is a proto3 "optional". When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must be belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a "synthetic" oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all "real" oneofs. For message fields, proto3_optional doesn't create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote "optional" or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can't tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
optional bool proto3_optional = 17 [json_name = "proto3Optional"];- Specified by:
getProto3Optionalin interfaceDescriptorProtos.FieldDescriptorProtoOrBuilder- Returns:
- The proto3Optional.
-
setProto3Optional
If true, this is a proto3 "optional". When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must be belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a "synthetic" oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all "real" oneofs. For message fields, proto3_optional doesn't create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote "optional" or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can't tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
optional bool proto3_optional = 17 [json_name = "proto3Optional"];- Parameters:
value- The proto3Optional to set.- Returns:
- This builder for chaining.
-
clearProto3Optional
If true, this is a proto3 "optional". When a proto3 field is optional, it tracks presence regardless of field type. When proto3_optional is true, this field must be belong to a oneof to signal to old proto3 clients that presence is tracked for this field. This oneof is known as a "synthetic" oneof, and this field must be its sole member (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs exist in the descriptor only, and do not generate any API. Synthetic oneofs must be ordered after all "real" oneofs. For message fields, proto3_optional doesn't create any semantic change, since non-repeated message fields always track presence. However it still indicates the semantic detail of whether the user wrote "optional" or not. This can be useful for round-tripping the .proto file. For consistency we give message fields a synthetic oneof also, even though it is not required to track presence. This is especially important because the parser can't tell if a field is a message or an enum, so it must always create a synthetic oneof. Proto2 optional fields do not set this flag, because they already indicate optional with `LABEL_OPTIONAL`.
optional bool proto3_optional = 17 [json_name = "proto3Optional"];- Returns:
- This builder for chaining.
-