Java 中的联合类型
2022-09-02 22:12:21
我已经使用C#一段时间了,并试图更熟悉Java。因此,我正在尝试迁移我每天在C#中使用的一些基本模式,即使只是为了了解JVM和dotnet之间的差距并弄清楚如何处理它们。这是我遇到的第一个问题 - 一个选项类型 - somethiong,在许多语言中很容易实现,即Koltlin:
sealed class Option<out T : Any> {
object None : Option<Nothing>()
data class Some<out T : Any>(val value: T) : Option<T>()}
所以我可以很容易地创建一个映射函子:
fun <T : Any, B : Any> Option<T>.map(f: (T) -> B): Option<B> =
when (this) {
is Option.None -> Option.None
is Option.Some -> Option.Some(f(this.value))}
这是我在Java中可以实现的吗?我不担心缺乏扩展方法,我可以不用它,但是如何在不依赖于未经检查的强制转换的情况下执行实际的类型匹配?至少这就是IntelliJ所抱怨的...