2011-05-11 39 views
1

我一直在Internet上搜索有关此错误的信息,但没有任何结果。我迷失了它。任何人都可以帮忙吗?空指针访问:变量“tipoEstablecimiento”只能在此位置为空

. 
. 
. 

    TipoEstablecimientoHotel tipoEstablecimiento = null; 
. 
. 
. 
. 
try{ 
    tipoEstablecimiento.setCodigo(""); <--- Line with the error. 
}catch (Exception e){ 
    System.out.println(e.getMessage()); 
} 
. 
. 
. 

我当然有我需要(我的意思是TipoEstablecimiento)的进口,它标志着与相应的警告线。

在此先感谢。

+0

你是否在任何地方初始化了对象,或者是你遗漏的代码的一部分? – 2011-05-11 15:51:56

+0

嗯,很明显,我已经为此创建了相应的java类。我说我有正确的进口,但很好的问题:-) – elvenbyte 2012-11-13 09:12:59

回答

2

你没有向我们展示足够的代码,但是我会随着你得到的错误而去。你不需要在为它赋值null和调用它的方法之间初始化变量,所以你肯定会得到一个NullPointerException(你不能解引用一个空对象)。确保在使用它之前通过调用它的构造函数来实例化它,如下所示:

tipoEstablecimiento = new TipoEstablecimientoHotel(); 
+0

它也会引发错误。 – elvenbyte 2011-05-11 15:55:40

+0

比检查这个错误是什么,并解决问题,如果你不知道如何,问这里(一个新的问题,细节和相关的代码),我们将很乐意帮助:) – MByD 2011-05-11 15:57:46

2

好吧,你想通过tipoEstablecimiento调用一个方法 - 和任何快到了警告已经证明,变不可能有一个非空值 - 所以它总是一个NullPointerException

你需要一个非空值赋给变量某处...

+0

嗯,我初始化该类型为null,因为此时我不能将其声明为正常方式,我的意思是:TipoEstablecimientoHotel tipoEstablecimiento = new TipoEstablecimientoHotel() ; – elvenbyte 2011-05-11 15:53:02

+1

@elvenbyte:那么你如何期望它能够工作?你应该感激编译器/ IDE /无论是警告你的代码在执行时永远不会工作 - 而是在编译时给你这个警告。 *为什么*你不能调用构造函数? – 2011-05-11 15:53:56

2

您需要将类实例,调用它的方法之前。

TipoEstablecimientoHotel tipoEstablecimiento = new TipoEstablecimientoHotel();

+0

我不能那样做,它会引发错误。 – elvenbyte 2011-05-11 15:56:02

2

IDE或编译器告诉你,你从未设置tipoEstablecimiento。换句话说,你所指的那条线绝对是保证抛出NullPointerException

将该变量设置为TipoEstablecimientoHotel的某个实例以避免该错误。

+0

但是,我该怎么做? – elvenbyte 2011-05-11 15:56:43

+0

根据您对其他人的回应,该类型(或扩展类型)存在哪些构造函数?把它想象成一个字符串。 'String x =“abc”; x.toUpperCase();'不会失败,因为它确实在说:''abc。“toUpperCase()'。但是,String x = null; x.toUpperCase();'会失败,因为它说'null.toUpperCase()'。 – pickypg 2011-05-11 16:00:25

1

setCodigo没有什么可做的。 TipoEstablecimiento是NULL,不是这个类的对象。 首先你必须实例化一个对象

+0

我不能做到这一点,它也会引发错误... – elvenbyte 2011-05-11 15:57:41

+0

执行setCodigo之前,您必须执行以下操作:TipoEstablecimientoHotel tipoEstablecimiento = new TipoEstablecimientoHotel(); – jenkin90 2011-05-11 16:06:50