objectbox / objectbox/objectbox-java
First Class Support for Enums
オープン
まだ誰も着手していません。
enhancement
- 主要言語
- Java
- スター
- 4.6k
- フォーク
- 311
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I can see that there's limited support for enums here but this is such a huge barrier to getting started. I don't want to have to write a converter for each enum type that I use in my code.
I propose first class support for enums using the following mechanism:
This can be repeated for all the natively supported types, and should now be able to be handled internally.
interface EnumInt {
val value: Int
}
interface EnumString {
val value: String
}
inline fun <reified T> enumFromInt(value: Int?): T?
where T : EnumInt, T : Enum<T> =
value?.let { v ->
enumValues<T>().let { values ->
values.find {
v == it.value
} ?: throw IllegalArgumentException("Invalid int value: $v")
}
}
inline fun <reified T> enumFromString(value: String?): T?
where T : EnumString, T : Enum<T> =
value?.let { v ->
enumValues<T>().let { values ->
values.find {
v == it.value
} ?: throw IllegalArgumentException("Invalid string value: $v")
}
}
enum class Type(override val value: String) : EnumString {
UNKNOWN("unknown"),
IMAGE("image"),
VIDEO("video")
}
enum class Status(override val value: Int) : EnumInt {
ERROR(-3),
UNRECOVERABLE_ERROR(-2),
NONE(-1),
DOWNLOADING(1),
DOWNLOADED(2),
UPLOADING(3),
FINISHED(0)
}
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、issueにリンクされたカスタム型のドキュメントと、既存のenumおよびカスタム型の処理を確認します。enumごとにconverterを用意しなくてもenumが第一級の永続化サポートを受けられ、提案されている整数値と文字列値のマッピングも含まれていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- kotlin
- 領域
- databases
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100