# LongDef

Artifact: [androidx.annotation:annotation](https://developer.android.com/jetpack/androidx/releases/annotation) [View Source](https://cs.android.com/search?q=file:androidx/annotation/LongDef.kt+class:androidx.annotation.LongDef) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/annotation#1.0.0)

*** ** * ** ***

Common/AllAndroid/JVM
- Cmn

  ```
  @Retention(value = AnnotationRetention.SOURCE)
  @Target(allowedTargets = [AnnotationTarget.ANNOTATION_CLASS])
  annotation LongDef
  ```

*** ** * ** ***

Denotes that the annotated long element represents a logical type and that its value should be one of the explicitly named constants. If the LongDef#flag() attribute is set to true, multiple constants can be combined.

Example:

```kotlin
@Retention(SOURCE)
@LongDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
public @interface NavigationMode {}
public static final long NAVIGATION_MODE_STANDARD = 0;
public static final long NAVIGATION_MODE_LIST = 1;
public static final long NAVIGATION_MODE_TABS = 2;
...
public abstract void setNavigationMode(@NavigationMode long mode);
@NavigationMode
public abstract long getNavigationMode();
```

For a flag, set the flag attribute:

```kotlin
@LongDef(
    flag = true,
    value = {NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS}
)
```

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/annotation/IntDef` |   |

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/annotation/LongDef#LongDef(kotlin.LongArray,kotlin.Boolean,kotlin.Boolean)(vararg value: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, flag: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, open: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` | Cmn |

| ### Public properties |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/LongDef#flag()` Defines whether the constants can be used as a flag, or just as an enum (the default) | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/LongDef#open()` Whether any other values are allowed. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/LongDef#value()` Defines the allowed constants for this element | Cmn |

## Public constructors

### LongDef

Cmn Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/annotation#1.10.0)

```
LongDef(vararg value: Long = [], flag: Boolean = false, open: Boolean = false)
```

## Public properties

### flag

Cmn

```
val flag: Boolean
```

Defines whether the constants can be used as a flag, or just as an enum (the default)

### open

Cmn

```
val open: Boolean
```

Whether any other values are allowed. Normally this is not the case, but this allows you to specify a set of expected constants, which helps code completion in the IDE and documentation generation and so on, but without flagging compilation warnings if other values are specified.

### value

Cmn

```
val value: LongArray
```

Defines the allowed constants for this element