Java:如何检查对象是否为空?

2022-08-31 10:48:46

我正在创建一个从Web检索图像的应用程序。如果无法检索图像,则应使用另一个本地图像。

尝试执行以下行时:

Drawable drawable = Common.getDrawableFromUrl(this, product.getMapPath());
if (drawable.equals(null)) {
  drawable = getRandomDrawable();
}

如果 drawable.equals(null)) 如果 drawable 为 null,则该线将引发异常。

有谁知道应该如何检查可绘制的值,以便在它为空的情况下不引发异常并检索本地图像(执行可绘制= getRandomDrawable())?


答案 1
Drawable drawable = Common.getDrawableFromUrl(this, product.getMapPath());
if (drawable == null) {
    drawable = getRandomDrawable();
}

该方法检查是否相等,这意味着它比较两个对象的内容。由于 不是对象,因此在尝试将对象的内容与 的内容进行比较时,此崩溃。equals()nullnull

运算符检查引用相等性,这意味着它会查看这两个对象是否实际上是完全相同的对象。这并不要求对象实际存在;两个不存在的对象(引用)也是相等的。==null


答案 2

编辑 Java 8 解决方案:

final Drawable drawable = 
    Optional.ofNullable(Common.getDrawableFromUrl(this, product.getMapPath()))
        .orElseGet(() -> getRandomDrawable());

在这种情况下,您可以声明。drawablefinal

正如Chasmo所指出的,Android目前不支持Java 8。因此,此解决方案仅在其他上下文中才可能。


推荐