java - 我得到了 NullPointerException

标签 java nullpointerexception

我将回到 Java 中的 OOP。在这里我遇到了简单示例的问题:

class CreateString {
    private String name;

    public CreateString(String name) {
        this.name = name;
    }

    String string = new String(name);//AAA
}

public class Main {

    public static void main(String[] args) {
        CreateString myName = new CreateString("tomjas");
    }
}

我从标记为“AAA”的行收到 NullPointerException。当我将第二行更改为

 private String name="";

没关系。该代码有什么问题?我认为该字段已初始化,可以从构造函数中得出结论。有任何提示和文档指示吗?

最佳答案

您的string变量是一个类属性。因此,它将在创建类实例时对其进行初始化。但此时 name 仍然为 null,因为您只在构造函数中为 name 赋值。所以你最终会得到一个 NullPointerException。

要修复此问题,请将 string = new String(name); 移动到构造函数中:

class CreateString {
  private String name = null;
  private String string = null;

  public CreateString(String name) {
      this.name = name;
      string = new String(name);
  }
}

由于构造函数仅在所有属性初始化后执行,因此将 private String string; 行放在何处并不重要。您也可以将它放在构造函数之后(就像您所做的那样),它仍然没问题。

关于java - 我得到了 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20326830/

相关文章:

java,用鼠标角度旋转BufferedImage

java - java中的HmacSHA256编码

Java:NoClassDefFoundError 使用 Apache Commons CLI 1.2

java - 为什么我不能取这个字符串的子串?

java - JFileChooser 错误消息 NullPointerException

java - 如何解决Android MultiDex应用实例空指针异常?

java - Mockito - 验证目标类方法内另一个对象的方法调用

java - 访问最终字段时出现奇怪的 NullPointerException

nullpointerexception - 单击微调器时出现空指针异常

java - jsoup 代码可以在 Java 中运行,但不能在 Android 中运行 - NullpointerException