在Java中访问另一个类中的静态变量时出现NullPointerException

Sat*_*tya 0 java

我试图在类B中访问类A的静态变量,但是我得到NullPointerException.代码是:

public class OutgoingMessage {
    public static SMPPSession session;
    public static void main(String [] args)
    {
         session = new SMPPSession();

    }
  }
Run Code Online (Sandbox Code Playgroud)

public class SendSMS {
    public static void main(String [] args)
    {
      if(OutgoingMessage.session.getSessionState().toString().equals("Connected"))//Line 44 
        {
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

错误读取

Exception in thread "main" java.lang.NullPointerException
        at SendSMS.main(SendSMS.java:44)
Run Code Online (Sandbox Code Playgroud)

知道我错过了什么吗?

谢谢

萨蒂亚

Jon*_*eet 6

当然 - 你正在使用OutgoingMessage.session,除非你跑,否则它将为空OutgoingMessage.main.这并不像main在任何地方自动调用方法 - 这只是应用程序的入口点.

我建议不要改变它来使用静态初始化器或类似的东西,而是尝试避免使用静态变量.

为什么OutgoingMessage有一个静态session变量是有意义的?我希望这两个人能够一起工作,而不是由另一个人组成......例如,我可以想象:

SMPPSession session = new SMPPSession();
session.send(outgoingMessage);
Run Code Online (Sandbox Code Playgroud)

甚至:

SMPPSession session = new SMPPSession();
outgoingMessage.sendInSession(session);
Run Code Online (Sandbox Code Playgroud)