Java Android文件是和非';t空

Java Android文件是和非';t空,java,android,nullpointerexception,Java,Android,Nullpointerexception,这是我描述发生了什么的最好方式 这是我的代码行: if (offer.getFamily().getProfileImage() == null) 这就是调试器显示的内容: 优惠和家庭都不是空的 因此,它没有进入if-like-should中,而是尝试获取文件路径,当然,它会失败,出现NullPointerException java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.

这是我描述发生了什么的最好方式

这是我的代码行:

if (offer.getFamily().getProfileImage() == null)
这就是调试器显示的内容:

优惠和家庭都不是空的

因此,它没有进入if-like-should中,而是尝试获取文件路径,当然,它会失败,出现
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

但是在调用
getProfileImage().getAbsolutePath()
时,我发现:
显然,问题在于
产品的反序列化(尤其是其中的
系列)

我通过一个改装的get电话获得了
优惠

我在
profileImage
属性中添加了
transient
,解决了这个问题:

私有瞬态文件profileImage

下面是调试器显示的内容:

所以我猜gson(我用它来反序列化改造响应)在创建一个文件时没有给它分配路径,这就是为什么它是空的,而不是空的


但是一个恰当的解释会很好。

很显然,问题在于
产品的反序列化(尤其是其中的
系列)

我通过一个改装的get电话获得了
优惠

我在
profileImage
属性中添加了
transient
,解决了这个问题:

私有瞬态文件profileImage

下面是调试器显示的内容:

所以我猜gson(我用它来反序列化改造响应)在创建一个文件时没有给它分配路径,这就是为什么它是空的,而不是空的


但是一个恰当的解释是很好的。

这个
文件
是非空的,但是它的
名称
在内部是空的。

这个
文件
是非空的,但是它的
名称
在内部是空的。

你在哪里调用
isEmpty()
或者
getAbsolutePath()
?我猜肯定是空的。可能您看到的是错误的代码部分。您能为我们列出完整的异常堆栈跟踪,并告诉我们它抱怨代码中的哪一行吗?我假设
offer
,或
getFamily()
为空。在这种情况下,我通常会断开方法调用链,逐个执行它们,捕获中间变量以供调试器或记录器检查。这还可以确定引发异常的语句。它对优化也有影响。另外,检查一下你的方法是否有副作用。我不认为这里有什么是空的。由于从不正确或不存在的文件加载的文件,getProfileImage()中的“路径”很可能为空。您在哪里调用
isEmpty()
getAbsolutePath()
?我猜肯定是空的。可能您看到的是错误的代码部分。您能为我们列出完整的异常堆栈跟踪,并告诉我们它抱怨代码中的哪一行吗?我假设
offer
,或
getFamily()
为空。在这种情况下,我通常会断开方法调用链,逐个执行它们,捕获中间变量以供调试器或记录器检查。这还可以确定引发异常的语句。它对优化也有影响。另外,检查一下你的方法是否有副作用。我不认为这里有什么是空的。由于从不正确或不存在的文件加载的文件,getProfileImage()中的“路径”很可能为空。如果不共享代码,您将是唯一能够回答问题的人。在查看文件系统时,尝试单步执行
User
方法。祝你好运@QED我想这可能是标准的Gson响应,在反序列化时不接收某个字段而不共享代码,您是唯一能够回答您问题的人。在查看文件系统时,尝试单步执行
User
方法。祝你好运@QED我认为这可能是标准的Gson响应,在反序列化时没有收到某个字段