# Class FieldOrMethod

java.lang.Object
org.apache.bcel.classfile.AccessFlags
org.apache.bcel.classfile.FieldOrMethod

All Implemented Interfaces:
  `Cloneable, Node`

Direct Known Subclasses:
  `Field, Method`

public abstract class FieldOrMethod extends AccessFlags implements Cloneable, Node
Abstract super class for fields and methods.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Attribute[]`
  `attributes`
  Deprecated.
  (since 6.0) will be made private; do not access directly, use getter/setter
  `protected int`
  `attributes_count`
  Deprecated.
  (since 6.0) will be removed (not needed)
  `protected ConstantPool`
  `constant_pool`
  Deprecated.
  (since 6.0) will be made private; do not access directly, use getter/setter
  `protected int`
  `name_index`
  Deprecated.
  (since 6.0) will be made private; do not access directly, use getter/setter
  `protected int`
  `signature_index`
  Deprecated.
  (since 6.0) will be made private; do not access directly, use getter/setter

  ### Fields inherited from class AccessFlags

  `access_flags`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FieldOrMethod(int accessFlags, int nameIndex, int signatureIndex, Attribute[] attributes, ConstantPool constantPool)`
  `protected`
  `FieldOrMethod(DataInput file, ConstantPool constantPool)`
  Constructs object from file stream.
  `protected`
  `FieldOrMethod(DataInputStream file, ConstantPool constantPool)`
  Deprecated.
  (6.0) Use `FieldOrMethod(java.io.DataInput, ConstantPool)` instead.
  `protected`
  `FieldOrMethod(FieldOrMethod c)`
  Initialize from another object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected FieldOrMethod`
  `copy_(ConstantPool constantPool)`
  `final void`
  `dump(DataOutputStream file)`
  Dump object to file stream on binary format.
  `AnnotationEntry[]`
  `getAnnotationEntries()`
  `final <T extends Attribute>
  T`
  `getAttribute(byte tag)`
  Gets attribute for given tag.
  `final Attribute[]`
  `getAttributes()`
  `final ConstantPool`
  `getConstantPool()`
  `final String`
  `getGenericSignature()`
  Hunts for a signature attribute on the member and returns its contents.
  `final String`
  `getName()`
  `final int`
  `getNameIndex()`
  `final String`
  `getSignature()`
  `final int`
  `getSignatureIndex()`
  `final void`
  `setAttributes(Attribute[] attributes)`
  `final void`
  `setConstantPool(ConstantPool constantPool)`
  `final void`
  `setNameIndex(int nameIndex)`
  `final void`
  `setSignatureIndex(int signatureIndex)`

  ### Methods inherited from class AccessFlags

  `getAccessFlags, getModifiers, isAbstract, isAbstract, isAnnotation, isAnnotation, isEnum, isEnum, isFinal, isFinal, isInterface, isInterface, isNative, isNative, isPrivate, isPrivate, isProtected, isProtected, isPublic, isPublic, isStatic, isStatic, isStrictfp, isStrictfp, isSynchronized, isSynchronized, isSynthetic, isSynthetic, isTransient, isTransient, isVarArgs, isVarArgs, isVolatile, isVolatile, setAccessFlags, setModifiers`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface Node

  `accept`

- ## Field Details

  - ### name_index

    @Deprecated protected int name_index
    Deprecated.
    (since 6.0) will be made private; do not access directly, use getter/setter

  - ### signature_index

    @Deprecated protected int signature_index
    Deprecated.
    (since 6.0) will be made private; do not access directly, use getter/setter

  - ### attributes

    @Deprecated protected Attribute[] attributes
    Deprecated.
    (since 6.0) will be made private; do not access directly, use getter/setter

  - ### attributes_count

    @Deprecated protected int attributes_count
    Deprecated.
    (since 6.0) will be removed (not needed)

  - ### constant_pool

    @Deprecated protected ConstantPool constant_pool
    Deprecated.
    (since 6.0) will be made private; do not access directly, use getter/setter

- ## Constructor Details

  - ### FieldOrMethod

    protected FieldOrMethod(DataInput file, ConstantPool constantPool) throws IOException
    Constructs object from file stream.
    Parameters:
      `file` - Input stream
    Throws:
      `IOException` - if an I/O error occurs.

  - ### FieldOrMethod

    @Deprecated protected FieldOrMethod(DataInputStream file, ConstantPool constantPool) throws IOException
    Deprecated.
    (6.0) Use `FieldOrMethod(java.io.DataInput, ConstantPool)` instead.
    Constructs object from file stream.
    Parameters:
      `file` - Input stream
    Throws:
      `IOException` - if an I/O error occurs.

  - ### FieldOrMethod

    protected FieldOrMethod(FieldOrMethod c)
    Initialize from another object. Note that both objects use the same references (shallow copy). Use clone() for a physical copy.
    Parameters:
      `c` - Source to copy.

  - ### FieldOrMethod

    protected FieldOrMethod(int accessFlags, int nameIndex, int signatureIndex, Attribute[] attributes, ConstantPool constantPool)
    Parameters:
      `accessFlags` - Access rights of method
      `nameIndex` - Points to field name in constant pool
      `signatureIndex` - Points to encoded signature
      `attributes` - Collection of attributes
      `constantPool` - Array of constants

- ## Method Details

  - ### copy_

    protected FieldOrMethod copy_(ConstantPool constantPool)
    Returns:
      deep copy of this field

  - ### dump

    public final void dump(DataOutputStream file) throws IOException
    Dump object to file stream on binary format.
    Parameters:
      `file` - Output file stream
    Throws:
      `IOException` - if an I/O error occurs.

  - ### getAnnotationEntries

    public AnnotationEntry[] getAnnotationEntries()
    Returns:
      Annotations on the field or method
    Since:
      6.0

  - ### getAttribute

    public final <T extends Attribute> T getAttribute(byte tag)
    Gets attribute for given tag.
    Returns:
      Attribute for given tag, null if not found. Refer to `Const.ATTR_UNKNOWN` constants named ATTR_* for possible values.
    Since:
      6.10.0

  - ### getAttributes

    public final Attribute[] getAttributes()
    Returns:
      Collection of object attributes.

  - ### getConstantPool

    public final ConstantPool getConstantPool()
    Returns:
      Constant pool used by this object.

  - ### getGenericSignature

    public final String getGenericSignature()
    Hunts for a signature attribute on the member and returns its contents. So where the 'regular' signature may be (Ljava/util/Vector;)V the signature attribute may in fact say 'Ljava/lang/Vector<Ljava/lang/String>;' Coded for performance - searches for the attribute only when requested - only searches for it once.
    Since:
      6.0

  - ### getName

    public final String getName()
    Returns:
      Name of object, i.e., method name or field name

  - ### getNameIndex

    public final int getNameIndex()
    Returns:
      Index in constant pool of object's name.

  - ### getSignature

    public final String getSignature()
    Returns:
      String representation of object's type signature (Java style)

  - ### getSignatureIndex

    public final int getSignatureIndex()
    Returns:
      Index in constant pool of field signature.

  - ### setAttributes

    public final void setAttributes(Attribute[] attributes)
    Parameters:
      `attributes` - Collection of object attributes.

  - ### setConstantPool

    public final void setConstantPool(ConstantPool constantPool)
    Parameters:
      `constantPool` - Constant pool to be used for this object.

  - ### setNameIndex

    public final void setNameIndex(int nameIndex)
    Parameters:
      `nameIndex` - Index in constant pool of object's name.

  - ### setSignatureIndex

    public final void setSignatureIndex(int signatureIndex)
    Parameters:
      `signatureIndex` - Index in constant pool of field signature.