# Interface StackWalker.StackFrame

Enclosing class:
  `StackWalker`

public static interface StackWalker.StackFrame
A `StackFrame` object represents a method invocation returned by `StackWalker`.

Stack walker options configure the stack frame information obtained by a `StackWalker`. If the stack walker is configured with `DROP_METHOD_INFO` option, method information such as the method name, the line number, the bytecode index, etc will be dropped. If the stack walker is configured with `RETAIN_CLASS_REFERENCE` option, the `Class` object will be retained for access.

See Java Virtual Machine Specification:
  2.6 Frames
Since:
  9

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getByteCodeIndex()`
  Returns the index to the code array of the `Code` attribute containing the execution point represented by this stack frame.
  `String`
  `getClassName()`
  Returns the binary name of the declaring class of the method represented by this stack frame.
  `Class<?>`
  `getDeclaringClass()`
  Returns the declaring `Class` for the method represented by this stack frame.
  `default String`
  `getDescriptor()`
  Returns the descriptor of the method represented by this stack frame as defined by The Java Virtual Machine Specification.
  `String`
  `getFileName()`
  Returns the name of the source file containing the execution point represented by this stack frame.
  `int`
  `getLineNumber()`
  Returns the line number of the source line containing the execution point represented by this stack frame.
  `String`
  `getMethodName()`
  Returns the name of the method represented by this stack frame.
  `default MethodType`
  `getMethodType()`
  Returns the `MethodType` representing the parameter types and the return type for the method represented by this stack frame.
  `boolean`
  `isNativeMethod()`
  Returns `true` if the method containing the execution point represented by this stack frame is a native method.
  `StackTraceElement`
  `toStackTraceElement()`
  Returns `StackTraceElement` for this stack frame.

- ## Method Details

  - ### getClassName

    String getClassName()
    Returns the binary name of the declaring class of the method represented by this stack frame.
    Returns:
      the binary name of the declaring class of the method represented by this stack frame
    See Java Language Specification:
      13.1 The Form of a Binary

  - ### getMethodName

    String getMethodName()
    Returns the name of the method represented by this stack frame.
    Returns:
      the name of the method represented by this stack frame
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option

  - ### getDeclaringClass

    Class<?> getDeclaringClass()
    Returns the declaring `Class` for the method represented by this stack frame.
    Returns:
      the declaring `Class` for the method represented by this stack frame
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured without `RETAIN_CLASS_REFERENCE` option

  - ### getMethodType

    default MethodType getMethodType()
    Returns the `MethodType` representing the parameter types and the return type for the method represented by this stack frame.
    Implementation Requirements:
      The default implementation throws `UnsupportedOperationException`.
    Returns:
      the `MethodType` of the method represented by this stack frame
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option or without `RETAIN_CLASS_REFERENCE` option
    Since:
      10

  - ### getDescriptor

    default String getDescriptor()
    Returns the descriptor of the method represented by this stack frame as defined by The Java Virtual Machine Specification.
    Implementation Requirements:
      The default implementation throws `UnsupportedOperationException`.
    Returns:
      the descriptor of the method represented by this stack frame
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option
    See Java Virtual Machine Specification:
      4.3.3 Method Descriptors
    Since:
      10
    See Also:
      - `MethodType.fromMethodDescriptorString(String, ClassLoader)`
      - `MethodType.toMethodDescriptorString()`

  - ### getByteCodeIndex

    int getByteCodeIndex()
    Returns the index to the code array of the `Code` attribute containing the execution point represented by this stack frame. The code array gives the actual bytes of Java Virtual Machine code that implement the method.
    Returns:
      the index to the code array of the `Code` attribute containing the execution point represented by this stack frame, or a negative number if the method is native.
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option
    See Java Virtual Machine Specification:
      4.7.3 The `Code` Attribute

  - ### getFileName

    String getFileName()
    Returns the name of the source file containing the execution point represented by this stack frame. Generally, this corresponds to the `SourceFile` attribute of the relevant `class` file as defined by The Java Virtual Machine Specification. In some systems, the name may refer to some source code unit other than a file, such as an entry in a source repository.
    Returns:
      the name of the file containing the execution point represented by this stack frame, or `null` if this information is unavailable.
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option
    See Java Virtual Machine Specification:
      4.7.10 The `SourceFile` Attribute

  - ### getLineNumber

    int getLineNumber()
    Returns the line number of the source line containing the execution point represented by this stack frame. Generally, this is derived from the `LineNumberTable` attribute of the relevant `class` file as defined by The Java Virtual Machine Specification.
    Returns:
      the line number of the source line containing the execution point represented by this stack frame, or a negative number if this information is unavailable.
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option
    See Java Virtual Machine Specification:
      4.7.12 The `LineNumberTable` Attribute

  - ### isNativeMethod

    boolean isNativeMethod()
    Returns `true` if the method containing the execution point represented by this stack frame is a native method.
    Returns:
      `true` if the method containing the execution point represented by this stack frame is a native method
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option

  - ### toStackTraceElement

    StackTraceElement toStackTraceElement()
    Returns `StackTraceElement` for this stack frame.
    Returns:
      `StackTraceElement` for this stack frame
    Throws:
      `UnsupportedOperationException` - if the `StackWalker` is configured with `DROP_METHOD_INFO` option