我试图在类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)
知道我错过了什么吗?
谢谢
萨蒂亚
当然 - 你正在使用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)