Java 为什么我在这里得到空异常?

Java 为什么我在这里得到空异常?,java,nullpointerexception,Java,Nullpointerexception,嗯,这看起来很奇怪。我正在初始化变量,它在初始化之后就在构造函数中工作,但是在draw方法中它不再工作了 这是代码,每当我尝试调用方法draw()中对象位置的任何方法时,都会出现异常: 这是我用GlText扩展的抽象类: public abstract class GraphicObject { protected Bounds bounds = new Bounds(); protected Bounds position = null; public abstrac

嗯,这看起来很奇怪。我正在初始化变量,它在初始化之后就在构造函数中工作,但是在draw方法中它不再工作了

这是代码,每当我尝试调用方法draw()中对象位置的任何方法时,都会出现异常:

这是我用GlText扩展的抽象类:

public abstract class GraphicObject {
    protected Bounds bounds = new Bounds();
    protected Bounds position = null;

    public abstract void draw(Graphics g, AlignStrategy align);
}
好的,这是调用构造函数的地方,嗯,它是从外部调用的,但是构造函数确实打印了行“BLOGAS:180”:

最终编辑: 感谢大家帮助我,由于你们的帮助,我终于发现了问题,这是一个遗留问题:

public void setFullText(String fullText) {
    this.fullText = fullText;
    position = null;
}

我已经修改了类,我完全忘记了这个方法有这样的东西。。。我通过使用find命令发现了这一点,所以我想这次这个故事的寓意是,无论你是否还没有创建任何其他变量,最好在编辑器上使用find函数对其进行测试…

如果draw是回调事件,并且如果框架不使用构造的对象,那么您将得到
NullPointerException

您需要确保框架在调用draw方法时使用传递的对象,您只需使用
draw
方法中的
=
操作符即可

在构造函数中存储对
GlText

private final GlText customized = null;
//Inside Constructor 
 customized = this;
内部
draw
方法

 if(this != customized )
 {
    System.out.println("Objects are different");
 }

难点在于理解框架并检查
draw
方法是如何被调用的:-)

是否可能与另一个
position
变量发生名称冲突?@Keppil我尝试添加这个-System.out.println(“position”+this.position.getX());但是它在同一个地方得到空指针异常:您确定要调用构造函数GlText(Bounds)吗?可能是您正在使用父类中隐式的默认构造函数初始化它。您是否也可以进行堆栈后跟踪?@ArturasM:我所说的名称冲突的意思是,您也可以在
GlText
类中声明一个
position
变量,隐藏从
GraphicObject
继承的变量。这将导致此行为,并且不会受到在变量之前添加
this.
的影响。
public void setFullText(String fullText) {
    this.fullText = fullText;
    position = null;
}
private final GlText customized = null;
//Inside Constructor 
 customized = this;
 if(this != customized )
 {
    System.out.println("Objects are different");
 }