Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会在这里得到例外?_Java - Fatal编程技术网

Java 为什么我会在这里得到例外?

Java 为什么我会在这里得到例外?,java,Java,这是我的类的构造函数。使用以下代码: public tester { setTitle("tester"); initComponents(); jTextArea6.setEditable(false); jEditorPane1.setEditable(false); } 一切都很好。但是有了这个代码 public tester() { setTitle("tester"); jTextArea6.setEditable(false);

这是我的类的构造函数。使用以下代码:

public tester {
    setTitle("tester");
    initComponents();
    jTextArea6.setEditable(false);
    jEditorPane1.setEditable(false);
}
一切都很好。但是有了这个代码

public tester() {
    setTitle("tester");
    jTextArea6.setEditable(false);
    jEditorPane1.setEditable(false);
    initComponents();

}
我得到以下例外情况:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at tester.tester.<init>(tester.java:31)
at tester.tester$35.run(tester.java:1389)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:660)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 tester.tester.(tester.java:31) tester.tester$35.run(tester.java:1389) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:660) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:128) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:117) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
为什么会这样

如果没有看到代码的其余部分(特别是
initComponents
的定义,加上字段的定义),就不可能100%确定

但几乎可以肯定的是,
initComponents()
方法设置
jtextraea6
和/或
jEditorPane1
的值。在第二个示例中,您试图在设置这些字段之前取消对它们的引用;这意味着它们的默认值为
null
,因此当您尝试对它们调用方法时,会引发NullPointerException

显然,一个解决办法是让事情保持原样,也许是加上一句评论

// Note - this method call initialises the fields.  DO NOT REORDER!!!

但更好的解决方案是让编译器为您检查这些内容。如果这两个字段从未更改(即,它们在构造函数中被一次性设置),那么您可以并且应该声明它们为
final
。除此之外,对于其他人来说,他们不必考虑这些字段改变的可能性,这意味着它们将不会有最初分配的默认值,编译器不会让它们在被赋值之前对它们进行解引用。因此,应该首先调用它?

,因为在initComponents()中;您可以安装的对象
jTextArea6绝地武士盘1

因为
jTextArea6
绝地武士盘1
正在由
initComponents
初始化。在此之前您无法访问它们-它们为空。这就是为什么会出现异常。

很可能是因为方法
initComponents()
初始化变量
jTextArea6
和/或
jEditorPane1
。初始化之前调用方法是抛出<代码> Null PoExtExeals< /Calp>

也许您正在尝试设置不存在的Advice(false)对象?为了更好的清晰,请考虑发布一个。如果这个问题已经这样做了,回答的人就不必急于下结论。我的程序使用netbeans。它会自动放置init methid。init实际上做什么?
public tester() {
  setTitle("tester");
  jTextArea6.setEditable(false);  //jTextArea6 might be null
  jEditorPane1.setEditable(false); //jEditorPane1 might be null
  initComponents(); //I assume you're creating your components here, thus jTextArea6 and jEditorPane1 would be non-null after this line only
}