-3

В настоящее время я работаю над созданием базового TextEditor в Java FX, но у меня есть немного сложности. Я пытаюсь включить стиль разработки MVC и использовать любой объект типа Document в модели при работе с редактором, хотя, когда я пытаюсь сохранить область содержимого, я получаю исключение NullPointException, когда я пытаюсь установить любые переменные в том случае, когда документ инициализируется нулем. Он отлично работает с ним, установленным для нового документа, будет иметь нулевые параметры, хотя ...Почему нулевые объекты вызывают NullPointerException

Любая информация о причинах для этого была бы действительно оценена!

Edit:

Извините за двусмысленности, я имел в виду с точки зрения инициализацией объекта, который я пытаюсь затем установить переменные. У меня было инициализирован просто нуль:

Document workingDocument = null 

Когда я изменил это:

Document workingDocument = new Document(null, null); 

Я понимаю, что создание нового документов делает с точки зрения памяти, но не то, что просто инициализацией его нуль делает. ..

+0

Можете ли вы показать нам какой-нибудь код? – Christoffer

+1

Если объект имеет значение null и вы пытаетесь вызвать метод на нем, что бы вы ожидали? – alfasin

+0

NullPointerException бросается, когда вы пытаетесь получить что-то от нуля. Например, 'null.someField',' null.getSomething() 'или' null [1] '. Это происходит потому, что 'null' не имеет полей, методов и не является массивом. Вам не нужно делать эти операции непосредственно на 'null'. То же самое произойдет, если вы сделаете так, чтобы ссылка, содержащая нуль, как 'String s = null; s.length(); '. – Pshemo

ответ

0

Вы не можете работать с нулевыми значениями. Единственная операция, которые доступны для нулей (в верхней части моей головы) является

  1. Nullchecks - if(document==null)
  2. Assignements - document=null

NullPointerException будет сгенерирован, например, если вы будете пытаться вызвать какой-то метод на null значение.

Document doc=new Document(); 
doc.toString(); // works just fine 
doc=null; 
doc.toString(); throws NPE. 

Вы должны ознакомиться с концепцией ООП, поскольку здесь широко используются нулевые значения. Здесь вы можете ознакомиться с соответствующей темой What is a NullPointerException, and how do I fix it?

0

Не уверен, что вы имеете в виду, но если нет объекта - вы не можете установить в нем какие-либо переменные, так как его не существует. Поэтому, если он инициализирован нулевым значением, он равен нулю - т. Е. Ничего.

Если вы создали экземпляр объекта, вы можете установить его переменные-члена, даже если переменные в нем равны нулю, поскольку объект фактически существует.

Null - null. Поэтому, даже если переменная имеет определенный тип, она укажет на значение null, если она была создана для нее.

Shoe myShoe; // This is a shoe typ variable 
myShoe = new Shoe(); // Now it's pointing to a new shoe object 
myShoe = null; // Now it's pointing to null, meaning there is no shoe object there anymore. 
Смежные вопросы