繁体   English   中英

如何比较 Java 中的对象?

[英]How do I compare objects in Java?

我有一个用 Kotlin 编写的数据 class ,其中包含服务器错误对象。

如何检查它是哪个 object?

我可以像这样在 Kotlin 中做到这一点

when (failure) {
    is Failure.ServerError -> test()//do something
    is Failure.ServerErrorConflict -> test()//do something
}

我想在 Java 中做同样的事情:

switch (failure) {
    case failure == Failure.ServerErrorConflict:
        break;
}

但我得到一个expression expected

这是我的数据 class

sealed class Failure {
    object NetworkConnection : Failure()
    object ServerError : Failure()
    object ServerErrorConflict : Failure()

    /** * Extend this class for feature specific failures.*/
    abstract class FeatureFailure : Failure()
}

请建议如何做到这一点。

通常在 java、object 中,引用与使用instanceof二元运算符的类型进行比较。

在 Java 的未来版本中,对于某些类型,不需要具有instanceof相等性检查的 if-else 条件,并且可以使用开关。 提供此好处的密封类功能目前正在 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>
    }

注意 - 切换表达式

  • 不需要break (不会失败)
  • 可以返回值

Java SE文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM