java - 等于方法崩溃应用程序

标签 java android

我正在尝试在 Android 中实现 .equals 方法:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Product product = (Product) o;
    String prdId = product.getProductId();
    return productId.equals(prdId);
}

当我运行调试并单步执行时,将跳过这些行:

Product product = (Product) o;
String prdId = product.getProductId();

应用程序崩溃时没有堆栈跟踪。请帮忙。谢谢。

最佳答案

如果 this.productId 为 null,则此等于方法可能会产生 NullPointerException。

您可以使用 Objects.equals()空安全比较:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;

    Product product = (Product) o;
    String prdId = product.getProductId();
    return Objects.equals(productId, prdId);
}

可以肯定的是,我们确实需要 StackTrace...

关于java - 等于方法崩溃应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988295/

相关文章:

android - 通过在自动完成 TextView 中按软键输入来防止用户转到下一行

android - 工具栏下的 ViewPager 不起作用

android - sdk 为 25 时如何编译自定义选项卡?

java - Spring无法调用Rest Endpoint得到404

java - 将注释移至 IntelliJ IDEA 中的上一行

java - FileInputStream读取方法不断返回194

android - 上传视频时出现问题 : Stream was reset: NO_ERROR

java - 线程 2 是否可以打印 “x=0” ?

java - 如何从 Java 程序内部将 powershell 脚本作为 Windows 服务运行?

android - 操作栏后面的小横幅叫什么?