gpt4 book ai didi

java - 在某些 Android 案例中,早期初始化会出错吗?

转载 作者:行者123 更新时间:2023-11-29 20:24:53 25 4
gpt4 key购买 nike

我有 BookFragment:

public class BooksFragment extends Fragment {
private final String ALL_PUBLISHERS = "Wszystkie Wydawnictwa";

然后在 private void 方法中,我像这样访问 ALL_PUBLISHERS 字段:

if(chosenPublisher != null && chosenPublisher.equals(ALL_PUBLISHERS))
doStuff();

现在代码似乎没有任何问题,我个人从来没有遇到过这个问题,但感谢 Google Play 开发者控制台,我注意到一些用户在访问 ALL_PUBLISHERS 字段时遇到 NullPointerException。

现在:

  • 问题出在 ALL_PUBLISHERS 字段 - stack
  • 我的 BookFragment 在 FragmentStatePagerAdapter 中使用,
  • 错误发生在各种安卓设备上

这种感觉是我造成的吗?

最佳答案

我认为您以错误的方式解释了堆栈跟踪;日志指出以下提示

Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

该方法在左侧变量 chosenPublisher 上调用。如果您在代码中以某种并发方式修改 chosenPublisher 变量,则 NPE 异常可能会在某些交错中发生,因为您的 if statament 不是原子的。另一方面,您的静态字段 ALL_PUBLISHERS 在类加载时被初始化:如果您没有修改它,它就不能为 null。

总而言之,我的建议是使用 ALL_PUBLISHERS 变量作为条件语句中的左侧元素:

if(chosenPublisher != null && ALL_PUBLISHERS.equals(chosenPublisher))
doStuff();

关于java - 在某些 Android 案例中,早期初始化会出错吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32697740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com