The unqualified name of the field (e.g. "foo"). For protocol buffer messages that
follow <a href=https://developers.google.com/protocol-buffers/docs/style#message_and_field_names>Google's
guidance on naming this will be a snake case string, such as
song_name
.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Class Descriptors.Descriptor (3.19.4)\n\n public static final class Descriptors.Descriptor extends Descriptors.GenericDescriptor\n\nDescribes a message type. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e [Descriptors.GenericDescriptor](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor) \\\u003e Descriptors.Descriptor \n\nInherited Members\n-----------------\n\n[Descriptors.GenericDescriptor.getFile()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getFile__) \n[Descriptors.GenericDescriptor.getFullName()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getFullName__) \n[Descriptors.GenericDescriptor.getName()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getName__) \n[Descriptors.GenericDescriptor.toProto()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_toProto__) \n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nMethods\n-------\n\n### findEnumTypeByName(String name)\n\n public Descriptors.EnumDescriptor findEnumTypeByName(String name)\n\nFinds a nested enum type by name.\n\n### findFieldByName(String name)\n\n public Descriptors.FieldDescriptor findFieldByName(String name)\n\nFinds a field by name.\n\n### findFieldByNumber(int number)\n\n public Descriptors.FieldDescriptor findFieldByNumber(int number)\n\nFinds a field by field number.\n\n### findNestedTypeByName(String name)\n\n public Descriptors.Descriptor findNestedTypeByName(String name)\n\nFinds a nested message type by name.\n\n### getContainingType()\n\n public Descriptors.Descriptor getContainingType()\n\nIf this is a nested type, get the outer descriptor, otherwise null.\n\n### getEnumTypes()\n\n public List\u003cDescriptors.EnumDescriptor\u003e getEnumTypes()\n\nGet a list of enum types nested within this one.\n\n### getExtensions()\n\n public List\u003cDescriptors.FieldDescriptor\u003e getExtensions()\n\nGet a list of this message type's extensions.\n\n### getFields()\n\n public List\u003cDescriptors.FieldDescriptor\u003e getFields()\n\nGet a list of this message type's fields.\n\n### getFile()\n\n public Descriptors.FileDescriptor getFile()\n\nGet the FileDescriptor containing this descriptor.\n\n**Overrides** \n[Descriptors.GenericDescriptor.getFile()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getFile__)\n\n### getFullName()\n\n public String getFullName()\n\nGet the type's fully-qualified name, within the proto language's namespace. This differs from\nthe Java name. For example, given this `.proto`:\n\npackage foo.bar;\noption java_package = \"com.example.protos\"\nmessage Baz {}\n\n`Baz`'s full name is \"foo.bar.Baz\".\n\n**Overrides** \n[Descriptors.GenericDescriptor.getFullName()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getFullName__)\n\n### getIndex()\n\n public int getIndex()\n\nGet the index of this descriptor within its parent. In other words, given a FileDescriptor `file`, the following is true:\n\nfor all i in \\[0, file.getMessageTypeCount()):\nfile.getMessageType(i).getIndex() == i\n\nSimilarly, for a [Descriptor](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.Descriptor) `messageType`:\n\nfor all i in \\[0, messageType.getNestedTypeCount()):\nmessageType.getNestedType(i).getIndex() == i\n\n### getName()\n\n public String getName()\n\nGet the type's unqualified name.\n\n**Overrides** \n[Descriptors.GenericDescriptor.getName()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_getName__)\n\n### getNestedTypes()\n\n public List\u003cDescriptors.Descriptor\u003e getNestedTypes()\n\nGet a list of message types nested within this one.\n\n### getOneofs()\n\n public List\u003cDescriptors.OneofDescriptor\u003e getOneofs()\n\nGet a list of this message type's oneofs.\n\n### getOptions()\n\n public DescriptorProtos.MessageOptions getOptions()\n\nGet the `MessageOptions`, defined in `descriptor.proto`.\n\n### getRealOneofs()\n\n public List\u003cDescriptors.OneofDescriptor\u003e getRealOneofs()\n\nGet a list of this message type's real oneofs.\n\n### isExtendable()\n\n public boolean isExtendable()\n\nIndicates whether the message can be extended. That is, whether it has any \"extensions x to\ny\" ranges declared on it.\n\n### isExtensionNumber(int number)\n\n public boolean isExtensionNumber(int number)\n\nDetermines if the given field number is an extension.\n\n### isReservedName(String name)\n\n public boolean isReservedName(String name)\n\nDetermines if the given field name is reserved.\n\n### isReservedNumber(int number)\n\n public boolean isReservedNumber(int number)\n\nDetermines if the given field number is reserved.\n\n### toProto()\n\n public DescriptorProtos.DescriptorProto toProto()\n\nConvert the descriptor to its protocol message representation.\n\n**Overrides** \n[Descriptors.GenericDescriptor.toProto()](/java/docs/reference/protobuf/latest/com.google.protobuf.Descriptors.GenericDescriptor#com_google_protobuf_Descriptors_GenericDescriptor_toProto__)"]]