java - 为什么我的编译器在不应该出现 NullPointerException 的情况下出现?

标签 java android oop methods nullpointerexception

我在方法之外创建了一个 FloatingActionButton 对象,但没有给它任何值。在方法 fabInitializer 中,我通过将其引用到 XML 文件中的标记来为其赋值。 当我想使用我创建的类对象的方法时,Android Studio 说:

object.method() may produce a java null pointer exception.

程序运行良好。

如果对象值为 null,它应该生成该消息,但事实并非如此。我该如何解决这个问题?

public void fabInitializer() {
    mFab = (FloatingActionButton) findViewById(R.id.fab);
    mFab.setOnClickListener(this);

}

最佳答案

这只是一个警告。 Android Studio 无法得出 mFab 不为 null 的结论(因为它可能是 various reasons )。如果您想移除警告并编写更具防御性的代码,请添加防御性空检查:

if (mFab!=null) mFab.setOnClickListener(this);

关于java - 为什么我的编译器在不应该出现 NullPointerException 的情况下出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37057100/

相关文章:

java - 如何修复 javadoc :fix 中的 "MavenInvocationException"

java - 向听众添加信息

java - 警报对话框中的图标应该有多大?

android - 在我的 ActionBar 中自定义 Up/Back/Burger 背景

oop - 省略 super() 和/或 *weakening* 前提条件是否违反里氏替换原则?

java - SimpleDateFormat:解析后小时为HH

java - Java中的 "Double"和 "double"有什么区别?

java - java中如何避免在循环中频繁创建对象?

python - 构造函数参数与方法调用

javascript - 如何仅传入属性来实例化 JavaScript 对象?