等于方法崩溃的应用程序

时间:2017-12-27 07:44:57

标签: 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();

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

2 个答案:

答案 0 :(得分:2)

如果this.productId为null,则此equals方法可能会产生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 ......

答案 1 :(得分:1)

您的问题似乎与f = new Fragment(); ((FragmentActivity) context).getFragmentManager().beginTransaction() .addToBackStack(null) .replace(ContainerId, f).commit(); 有关,因为productid为NullPointerException,您必须确保在调用null null >

productid.equals