# UsesReflectionToAccessField

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

*** ** * ** ***

Common/All
- Cmn

  ```
  @Retention(value = AnnotationRetention.BINARY)
  @Repeatable
  @Target(allowedTargets = [AnnotationTarget.CLASS, AnnotationTarget.FIELD, AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR])
  annotation UsesReflectionToAccessField
  ```

*** ** * ** ***

The annotated code uses reflection to indirectly access a field of the specified class/interface, or its subclasses / interface implementers.

This annotation indicates to optimizers or shrinkers that the target field should be preserved if the annotated code is reachable in the final application build.

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

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#UsesReflectionToAccessField(kotlin.reflect.KClass,kotlin.String,kotlin.String,kotlin.reflect.KClass,kotlin.String)( classConstant: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>, className: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, fieldName: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html, fieldType: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>, fieldTypeName: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html )` | Cmn |

| ### Public properties |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>` | `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#classConstant()` Class containing the field accessed by reflection. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#className()` Class name (or class name pattern) containing the field accessed by reflection. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#fieldName()` Name (or name pattern) of field accessed by reflection. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.reflect/-k-class/index.html<*>` | `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#fieldType()` Type of field accessed by reflection. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html` | `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#fieldTypeName()` Type (or type pattern) of field accessed by reflection. | Cmn |

## Public constructors

### UsesReflectionToAccessField

Cmn Added in [1.0.0-alpha01](https://developer.android.com/jetpack/androidx/releases/annotation-keep#1.0.0-alpha01)

```
UsesReflectionToAccessField(
    classConstant: KClass<*> = Unspecified::class,
    className: String = "",
    fieldName: String,
    fieldType: KClass<*> = Unspecified::class,
    fieldTypeName: String = ""
)
```

## Public properties

### classConstant

Cmn

```
val classConstant: KClass<*>
```

Class containing the field accessed by reflection.

Mutually exclusive with `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#(kotlin.reflect.KClass,kotlin.String,kotlin.String,kotlin.reflect.KClass,kotlin.String)`.

### className

Cmn

```
val className: String
```

Class name (or class name pattern) containing the field accessed by reflection.

Mutually exclusive with `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#(kotlin.reflect.KClass,kotlin.String,kotlin.String,kotlin.reflect.KClass,kotlin.String)`.

### fieldName

Cmn

```
val fieldName: String
```

Name (or name pattern) of field accessed by reflection.

### fieldType

Cmn

```
val fieldType: KClass<*>
```

Type of field accessed by reflection.

Ignored if not specified.

Mutually exclusive with `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#(kotlin.reflect.KClass,kotlin.String,kotlin.String,kotlin.reflect.KClass,kotlin.String)`.

### fieldTypeName

Cmn

```
val fieldTypeName: String
```

Type (or type pattern) of field accessed by reflection.

Ignored if not specified.

Mutually exclusive with `https://developer.android.com/reference/kotlin/androidx/annotation/keep/UsesReflectionToAccessField#(kotlin.reflect.KClass,kotlin.String,kotlin.String,kotlin.reflect.KClass,kotlin.String)`.