# RemoteDescriptor.Builder

Artifact: [androidx.test.espresso:espresso-remote](https://developer.android.com/jetpack/androidx/releases/test-espresso) [View Source](https://cs.android.com/search?q=file:androidx/test/espresso/remote/RemoteDescriptor.java+class:androidx.test.espresso.remote.RemoteDescriptor.Builder)

*** ** * ** ***

<br />

```
public final class RemoteDescriptor.Builder
```

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#Builder()()` |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#build()()` Builds a `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor` from the builder properties set. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setInstanceFieldDescriptors(androidx.test.espresso.remote.FieldDescriptor...)( @https://developer.android.com/reference/androidx/annotation/Nullable FieldDescriptor[] fieldDescriptors )` Sets the `https://developer.android.com/reference/androidx/test/espresso/remote/FieldDescriptor`s associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setInstanceType(java.lang.Class<?>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> instanceType)` Sets the instance type for associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setProtoBuilderType(java.lang.Class<?>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoBuilderType)` Sets the type of the proto message builder associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setProtoParser(com.google.protobuf.Parser<?>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://protobuf.dev/reference/java/api-docs/com/google/protobuf/Parser.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoParser)` Sets the type of the proto message parser associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setProtoType(java.lang.Class<?>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoType)` Sets the type of the proto message associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setRemoteConstrTypes(java.lang.Class<?>...)(@https://developer.android.com/reference/androidx/annotation/Nullable Class[] remoteConstrTypes)` Sets the remote constructor types of the `https://developer.android.com/reference/androidx/test/espresso/remote/EspressoRemoteMessage` associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder#setRemoteType(java.lang.Class<?>)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> remoteType)` Sets the type of the `https://developer.android.com/reference/androidx/test/espresso/remote/EspressoRemoteMessage` associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`. |

## Public constructors

### Builder

```
public Builder()
```

## Public methods

### build

```
public RemoteDescriptor build()
```

Builds a `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor` from the builder properties set.

### setInstanceFieldDescriptors

```
public RemoteDescriptor.Builder setInstanceFieldDescriptors(
    @Nullable FieldDescriptor[] fieldDescriptors
)
```

Sets the `https://developer.android.com/reference/androidx/test/espresso/remote/FieldDescriptor`s associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

The field descriptor order, must match the `instanceType`s declared constructor parameter order.

Note: Any field descriptors passed to this method will be overwritten by field descriptors annotated with `https://developer.android.com/reference/androidx/test/espresso/remote/annotation/RemoteMsgField`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable FieldDescriptor[] fieldDescriptors` |   |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setInstanceType

```
public RemoteDescriptor.Builder setInstanceType(@NonNull Class<@NonNull ?> instanceType)
```

Sets the instance type for associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

The instance type represents the class that will be converted to and from a proto.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> instanceType` |   |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setProtoBuilderType

```
public RemoteDescriptor.Builder setProtoBuilderType(@NonNull Class<@NonNull ?> protoBuilderType)
```

Sets the type of the proto message builder associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

By default the proto builder will be created by this class. Only call this method if a custom builder is required.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoBuilderType` | the proto message builder class |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setProtoParser

```
public RemoteDescriptor.Builder setProtoParser(@NonNull Parser<@NonNull ?> protoParser)
```

Sets the type of the proto message parser associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

By default the proto parser is inferred from the `protoType`. Only call this method if a custom parser is required.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://protobuf.dev/reference/java/api-docs/com/google/protobuf/Parser.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoParser` | the proto parser |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setProtoType

```
public RemoteDescriptor.Builder setProtoType(@NonNull Class<@NonNull ?> protoType)
```

Sets the type of the proto message associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> protoType` | the proto message class |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setRemoteConstrTypes

```
public RemoteDescriptor.Builder setRemoteConstrTypes(@Nullable Class[] remoteConstrTypes)
```

Sets the remote constructor types of the `https://developer.android.com/reference/androidx/test/espresso/remote/EspressoRemoteMessage` associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

The types passed to this method will be used to reflectively infer the remote message constructor.

By default the `instanceType` is used as remote message constructor. Only set custom remote constructor types, when the remote message constructor takes a superclass or interface, implemented by the instance type. Don't call this method when using `https://developer.android.com/reference/androidx/test/espresso/remote/GenericRemoteMessage`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable Class[] remoteConstrTypes` |   |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |

### setRemoteType

```
public RemoteDescriptor.Builder setRemoteType(@NonNull Class<@NonNull ?> remoteType)
```

Sets the type of the `https://developer.android.com/reference/androidx/test/espresso/remote/EspressoRemoteMessage` associated with this `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> remoteType` | the remote message class |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/test/espresso/remote/RemoteDescriptor.Builder` | fluent builder interface |