# RoomDatabaseConstructor

Artifact: [androidx.room3:room3-runtime](https://developer.android.com/jetpack/androidx/releases/room3) [View Source](https://cs.android.com/search?q=file:androidx/room3/RoomDatabaseConstructor.kt+class:androidx.room3.RoomDatabaseConstructor) Added in [3.0.0](https://developer.android.com/jetpack/androidx/releases/room3#3.0.0)

*** ** * ** ***

Common/AllAndroid/JVMNative/C/iOSJavaScript
- Cmn

  ```
  interface RoomDatabaseConstructor<T : RoomDatabase>
  ```

*** ** * ** ***

Defines a class that can instantiate the Room generated implementation of an 'abstract' `https://developer.android.com/reference/kotlin/androidx/room3/Database` annotated `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabase` definition.

This interface is to be used in conjunction with `https://developer.android.com/reference/kotlin/androidx/room3/ConstructedBy` to define an 'expect' declaration of an 'object' that implements this interface. The defined 'object' can then be optionally used in Room's `databaseBuilder` or `inMemoryDatabaseBuilder` as the `factory`.

For example, with the following object definition:

```kotlin
expect object MusicDatabaseConstructor : RoomDatabaseConstructor<MusicDatabase>
```

one can reference the object's `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabaseConstructor#initialize()` during database creation:

```kotlin
fun createDatabase(): MusicDatabase {
    return Room.inMemoryDatabaseBuilder<MusicDatabase>(
        factory = MusicDatabaseConstructor::initialize
    ).build()
}
```

For Room to correctly and automatically use 'actual' implementations of this interface, they must be linked to their respective `https://developer.android.com/reference/kotlin/androidx/room3/Database` definition via `https://developer.android.com/reference/kotlin/androidx/room3/ConstructedBy`.

| Parameters |
|---|---|
| `<T : https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabase>` | The `https://developer.android.com/reference/kotlin/androidx/room3/Database` and `https://developer.android.com/reference/kotlin/androidx/room3/ConstructedBy` annotated class linked to this constructor. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/room3/ConstructedBy` |   |

## Summary

| ### Public functions |
|---|---|---|
| `T` | `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabaseConstructor#initialize()()` Instantiates an implementation of `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabaseConstructor`. | Cmn |

## Public functions

### initialize

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

```
fun initialize(): T
```

Instantiates an implementation of `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabaseConstructor`.

| Returns |
|---|---|
| `T` | T - A new instance of `https://developer.android.com/reference/kotlin/androidx/room3/RoomDatabaseConstructor`. |