Ну, вы игнорируете свой параметр ... вы присваиваете новое значение для name
в первой строке.Это означает, что ваш метод почти наверняка сломан для начала.
Затем рассмотрим, откуда fullname
(который я предполагаю, является переменной экземпляра).Если вы не установите значение в конструкторе без параметров, по умолчанию оно будет null
.Это действительно то, что вы хотите?
Я предлагаю вам изменить класс Name
на only , чтобы конструкторы принимали параметры имени, и чтобы вы подтвердили, что они не равны NULL.Таким образом, вы никогда не сможете получить недопустимый объект Name
, полное имя которого будет null
.
РЕДАКТИРОВАТЬ: теперь вы добавили больше кода, посмотрите на конструктор без параметров и метод setName
:
public Name()
{
setName(fullname);
}
public void setName(String n)
{
fullname = n;
}
Это означает, что ваш конструктор без параметров эквивалентен:
public Name()
{
fullname = fullname;
}
... т.е. без операции.fullname
будет нулевым, отсюда и исключение.
Мой совет - полностью избавиться от конструктора без параметров и сделать так, чтобы другой проверял параметр.