java是否可以将Kotlin的bydelegation用于现有的类/对象(即Arrow的)?
我有几个专门的类,我想用Kotlin和Arrow创建,它们将围绕一个Arrow或monad。我创建了下面的代码来使用Kotlin的委托,但我想知道它是否可以简化或变得更地道。如有任何建议,将不胜感激
感谢您的时间和兴趣
internal data class EitherWrapper<L,R>(private var delegate: Either<L,R>) {
internal operator fun getValue(thisRef: Any?, property: KProperty<*>): Either<L,R> {
return delegate
}
internal operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Either<L,R>) {
delegate = value
}
}
fun main(args: Array<String>) {
val delegate: Either<Exception, String> = Right("howdy")
val myeither: Either<Exception, String> by EitherWrapper(delegate)
println("IsLeft(): ${myeither.isLeft()}")
println("IsRight(): ${myeither.isRight()}")
}
# 1 楼答案
所以,我想我有一个解决问题的办法。下面的代码将一个“任意”封装在一个新类型中:Exception。这段代码是我想要构建的起点。最终,我会有如下内容:
我可以通过后端服务传递这种类型的实例,并返回更精确的异常、错误或值
跑步:
# 2 楼答案
您的代码是正确的,据我所知,您唯一能做的改进是使其通用,而不是具体,如下所示: