OVE*_*ONE 1 java nullpointerexception
我现在已经在这一点了.我有一个空指针异常所以我猜测某些事情没有被初始化.
AdminMessages.inbox1.setText(messageRsetArray[0]);
Run Code Online (Sandbox Code Playgroud)
这是我的代码所针对的代码.但我找不到里面的东西.它尚未初始化.
AdminMessages是一个包含JTextField被调用的类inbox1,messageRsetArray是一个从数组中获取变量的数组.
也是inbox1静态的.我无法让吸气剂和二传手工作.我知道这是不好的做法.
Exception in thread "main" java.lang.NullPointerException
at project.AdminMessages.fillInboxGui(AdminMessages.java:587)
at project.AdminMessages.<init>(AdminMessages.java:156)
at project.AdminUser.createAdminMessages(AdminUser.java:31)
at project.AdminUser.<init>(AdminUser.java:17)
at project.AdminUser.main(AdminUser.java:45)
Run Code Online (Sandbox Code Playgroud)
inbox1和/或messageRsetArray是null.您必须使用以下方法实例化它们:
inbox1 = new JTextField();
Run Code Online (Sandbox Code Playgroud)
和
messageRsetArray = new String[size];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只需检查哪个变量可能null在该位置.如果你无法确定,那么拆分表达式,使每行只有一个"NPE-thrower":
String text = messageRsetArray[0];
AdminMessages.inbox1.setText(text);
Run Code Online (Sandbox Code Playgroud)
并且您将在下一个堆栈跟踪中获得明确的答案.
据我所知,你想要的东西不容易做到(任何"点"都是例外的候选者).
略微重写源代码可能是获得所需内容的最简单方法.
AdminMessages.inbox1.setText(messageRsetArray[0]);
Run Code Online (Sandbox Code Playgroud)
成
inbox1 = Adminmessages.inbox1;
text = messageRSetArray[0];
inbox1.setText(text);
Run Code Online (Sandbox Code Playgroud)
这使得每行只有一个"点"操作,并且明显哪一个被打破.
您可能还想帮助此人查看堆栈跟踪
if (AdminMessages.inbox1 == null) {
throw new IllegalArgumentException("AdminMessages.inbox1 == null");
}
Run Code Online (Sandbox Code Playgroud)
(我喜欢这个用于方法参数.当在代码内部时,您可能需要NullPointerExceptions).