java Android文件为且不为空
这是我描述发生了什么的最好方式
这是我的代码行:
if (offer.getFamily().getProfileImage() == null)
优惠和家庭都不是空的
因此,它不应该像应该的那样进入if,而是尝试获取文件路径,当然,它会失败,出现NullPointerException
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference
at java.io.UnixFileSystem.resolve(UnixFileSystem.java:95)
at java.io.UnixFileSystem.resolve(UnixFileSystem.java:130)
at java.io.File.getAbsolutePath(File.java:524)
at com.yournanny.utilities.ProfileImageUtilities.showProfileImage(ProfileImageUtilities.java:109)
下面是我得到错误的地方:
public static void showProfileImage(User user, ImageView image) {
image.setImageBitmap(BitmapFactory.decodeFile(user.getProfileImage().getAbsolutePath()));
}
这是怎么回事
更新
查看这些注释,我打破了这些链并重新运行它,无论是offer
还是getFamily()
都不会返回null,如果我对它们调用其他方法,我就会得到预期的值
但是getProfileImage()
肯定返回null,问题是当我在if中比较它时,它还不够null
# 1 楼答案
File
是非空的,但它的name
在内部是空的# 2 楼答案
显然,问题在于
offer
的反序列化(尤其是其中的family
)我通过一个改装的get电话得到了
offer
我在
profileImage
属性中添加了transient
,解决了这个问题:private transient File profileImage;
下面是调试器显示的内容:
所以我猜gson(我用它来反序列化改造响应)在创建一个文件时没有给它分配路径,这就是为什么它是空的,而不是空的
但是一个恰当的解释会很好