BRD*_*oid 0 java android kotlin
我有一个用 Kotlin 编写的数据类,它有服务器错误对象。
如何检查它是哪个对象?
我可以像这样在 Kotlin 中做到这一点
when (failure) {
is Failure.ServerError -> test()//do something
is Failure.ServerErrorConflict -> test()//do something
}
Run Code Online (Sandbox Code Playgroud)
我想在 Java 中做同样的事情:
switch (failure) {
case failure == Failure.ServerErrorConflict:
break;
}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误 expression expected
这是我的数据类
sealed class Failure {
object NetworkConnection : Failure()
object ServerError : Failure()
object ServerErrorConflict : Failure()
/** * Extend this class for feature specific failures.*/
abstract class FeatureFailure : Failure()
}
Run Code Online (Sandbox Code Playgroud)
请建议如何做到这一点。
通常在 Java 中,对象引用与使用instanceof二元运算符的类型进行比较。
在 Java 的未来版本中,对于某些类型,instanceof不需要带有相等检查的if-else 条件,可以使用 switch。提供这种好处的密封类特性目前正在 Java 15中预览,并在即将到来的 Java 16 中再次预览。
switch (failure) {
case NetworkConnection nc -> <do the required operation>
case ServerError se -> <do the required operation>
case ServerErrorConflict sec -> <do the required operation>
}
Run Code Online (Sandbox Code Playgroud)
break 不需要(不会失败)