Java 在声明对象为null后为成员变量赋值时出错
我是Java新手,遇到以下情况时出错:Java 在声明对象为null后为成员变量赋值时出错,java,object,nullpointerexception,Java,Object,Nullpointerexception,我是Java新手,遇到以下情况时出错: markerObj = null; markerObj.sections = RowData[1]; 但是,在删除第一行之后,它可以正常工作。 问题是什么?这正是它应该做的。 通过将null赋值给变量,可以明确表示它不再绑定到实例 因此,当您在代码中引用节时,您引用的是一个不存在的实例的节成员。您试图访问空对象的成员。。这就是问题所在 如果您想要一个新实例。。 然后执行以下操作 markerObj = new objectClassName(); 将值
markerObj = null;
markerObj.sections = RowData[1];
但是,在删除第一行之后,它可以正常工作。
问题是什么?这正是它应该做的。
通过将
null
赋值给变量,可以明确表示它不再绑定到实例
因此,当您在代码中引用
节时,您引用的是一个不存在的实例的节成员。您试图访问空对象的成员。。这就是问题所在
如果您想要一个新实例。。
然后执行以下操作
markerObj = new objectClassName();
将值分配给对象的字段,该字段由marketObj
引用。但是,由于markerObj
不引用任何对象(它被设置为null
),因此无法进行赋值,您将得到一个NullPointerException。如果不希望出现异常,应首先将对象分配给marketObj
如果将对象标记为null,则无法将值分配给其成员变量。问题是,一旦您说markerObj=null
它将内存指向null,即它不会向其启动任何内存对象。因此,您会得到一个空指针错误
顺便说一下,如果您试图将其值实例化为null,那么请尝试将其内部数据属性设置为null,例如TextView.setText(null)代码>
也许它因您使用的类而异。请访问。变量名只是引用。它们指向内存中(堆中)包含对象的空间
当您执行MyObj myObject=new MyObj()时代码>,它做两件事:在内存中创建对象,并将myObject引用指向它。
因此,当您执行myObject.sections
时,它会跟随引用,并检查内存中对象的sections部分
然后,当您执行myObject=null
时,基本上会破坏引用和内存中对象之间的链接。因此,当执行myObject.sections
时,Java不能再遵循引用,因为它没有指向任何东西。因此它抛出一个NullPointerException
请注意,对象本身未被myObject=null
破坏,只有引用无效。垃圾收集器随后检测到您的对象不可访问(如果没有其他引用),并回收内存,销毁该对象。这是Java问题,不是Android特有的。我想把这张海报交给图书馆。