# Interface IMemberValuePair

public interface IMemberValuePair
Represents a member-value pair of an annotation. The `value` is represented by an `Object`. To get the exact type of this object, use its `value kind`. If this value is an array, `getValue()` returns an instance of `Object`[] and the value kind returns the kind of the elements in this array.

This interface is not intended to be implemented or extended by clients.

Since:
  3.4

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`K_ANNOTATION`
Constant indicating that the value kind is an annotation represented by an instance of `IAnnotation`.
`static final int`
`K_BOOLEAN`
Constant indicating that the value kind is a `boolean` represented by an instance of `Boolean`.
`static final int`
`K_BYTE`
Constant indicating that the value kind is a `byte` represented by an instance of `Byte`.
`static final int`
`K_CHAR`
Constant indicating that the value kind is a `char` represented by an instance of `Character`.
`static final int`
`K_CLASS`
Constant indicating that the value kind is a `Class` represented by the name of the class (i.e. a `String`.
`static final int`
`K_DOUBLE`
Constant indicating that the value kind is a `double` represented by an instance of `Double`.
`static final int`
`K_FLOAT`
Constant indicating that the value kind is a `float` represented by an instance of `Float`.
`static final int`
`K_INT`
Constant indicating that the value kind is an `int` represented by an instance of `Integer`.
`static final int`
`K_LONG`
Constant indicating that the value kind is a `long` represented by an instance of `Long`.
`static final int`
`K_QUALIFIED_NAME`
Constant indicating that the value is a qualified name represented by a `String`.
`static final int`
`K_SHORT`
Constant indicating that the value kind is a `short` represented by an instance of `Short`.
`static final int`
`K_SIMPLE_NAME`
Constant indicating that the value is a simple name represented by a `String`.
`static final int`
`K_STRING`
Constant indicating that the value kind is a `String` represented by the corresponding `String`.
`static final int`
`K_UNKNOWN`
Constant indicating that the value kind is unknown at this stage.

## Method Summary

Modifier and Type
Method
Description
`String`
`getMemberName()`
Returns the member's name of this member-value pair.
`Object`
`getValue()`
Returns the value of this member-value pair.
`int`
`getValueKind()`
Returns the value kind of this member-value pair.

## Field Details

### K_INT

static final int K_INT
Constant indicating that the value kind is an `int` represented by an instance of `Integer`.

See Also:
  - Constant Field Values

### K_BYTE

static final int K_BYTE
Constant indicating that the value kind is a `byte` represented by an instance of `Byte`.

See Also:
  - Constant Field Values

### K_SHORT

static final int K_SHORT
Constant indicating that the value kind is a `short` represented by an instance of `Short`.

See Also:
  - Constant Field Values

### K_CHAR

static final int K_CHAR
Constant indicating that the value kind is a `char` represented by an instance of `Character`.

See Also:
  - Constant Field Values

### K_FLOAT

static final int K_FLOAT
Constant indicating that the value kind is a `float` represented by an instance of `Float`.

See Also:
  - Constant Field Values

### K_DOUBLE

static final int K_DOUBLE
Constant indicating that the value kind is a `double` represented by an instance of `Double`.

See Also:
  - Constant Field Values

### K_LONG

static final int K_LONG
Constant indicating that the value kind is a `long` represented by an instance of `Long`.

See Also:
  - Constant Field Values

### K_BOOLEAN

static final int K_BOOLEAN
Constant indicating that the value kind is a `boolean` represented by an instance of `Boolean`.

See Also:
  - Constant Field Values

### K_STRING

static final int K_STRING
Constant indicating that the value kind is a `String` represented by the corresponding `String`.

See Also:
  - Constant Field Values

### K_ANNOTATION

static final int K_ANNOTATION
Constant indicating that the value kind is an annotation represented by an instance of `IAnnotation`.

See Also:
  - Constant Field Values

### K_CLASS

static final int K_CLASS
Constant indicating that the value kind is a `Class` represented by the name of the class (i.e. a `String`. If the member-value pair is coming from a compilation unit, this is either a simple name (e.g. for `MyType.class`, the name is "MyType"), or a qualified name (e.g. for `x.y.MyType.MyNestedType.class`, the name is "x.y.MyType.MyNestedType"). If the member-value pair is coming from a class file, this is always a fully qualified name.

Note that one can use `IType.resolveType(String)` and e.g. `IJavaProject.findType(String, String, org.eclipse.core.runtime.IProgressMonitor)` to find the corresponding `IType`.

See Also:
  - Constant Field Values

### K_QUALIFIED_NAME

static final int K_QUALIFIED_NAME
Constant indicating that the value is a qualified name represented by a `String`. The qualified name refers to an enum constant or another compile-time constant if the code is correct (e.g. "MyEnum.FIRST").

See Also:
  - Constant Field Values

### K_SIMPLE_NAME

static final int K_SIMPLE_NAME
Constant indicating that the value is a simple name represented by a `String`. The simple name refers to an enum constant or another compile-time constant if the code is correct (e.g. "FIRST" when there is a static import for "MyEnum.FIRST").

See Also:
  - Constant Field Values

### K_UNKNOWN

static final int K_UNKNOWN
Constant indicating that the value kind is unknown at this stage. The value is unknown in the following cases:

- the value is an expression that would need to be further analyzed to determine its kind. For example, in `@MyAnnot(1 + 2.3)` the kind of the expression "1 + 2.3" is unknown
- the value is an array of size 0, e.g. `@MyAnnot({})`
- the value is an array that contains at least one expression that would need to be further analyzed to determine its kind. For example, in `@MyAnnot({3.4, 1 + 2.3})`, the kind of the second element "1 + 2.3" is unknown.
- the value is an array that contains heterogeneous values, e.g. `@MyAnnot({1, 2.3, "abc"})`

If the value kind is unknown, the returned value is always either `null`, or an array containing `Object`s and/or `null`s for unknown elements.

See Also:
  - Constant Field Values

## Method Details

### getMemberName

String getMemberName()
Returns the member's name of this member-value pair.

Returns:
  the member's name of this member-value pair.

### getValue

Object getValue()
Returns the value of this member-value pair. The type of this value is function of this member-value pair's `value kind`. It is an instance of `Object`[] if the value is an array.

If the value kind is `K_UNKNOWN` and the value is not an array, then the value is `null`. If the value kind is `K_UNKNOWN` and the value is an array, then the value is an array containing `Object`s and/or `null`s for unknown elements. See `K_UNKNOWN` for more details.

Returns:
  the value of this member-value pair.

### getValueKind

int getValueKind()
Returns the value kind of this member-value pair. This indicates the instance of the returned `value`, or the instance of the elements if the value is an array. The value kind is one of the following constants: `K_ANNOTATION`, `K_BOOLEAN`, `K_BYTE`, `K_CHAR`, `K_CLASS`, `K_DOUBLE`, `K_FLOAT`, `K_INT`, `K_LONG`, `K_QUALIFIED_NAME`, `K_SIMPLE_NAME`, `K_SHORT`, `K_STRING`, `K_UNKNOWN`.

Returns:
  the value kind of this member-value pair