Ich habe ein Bean namens "EmployeeModel" und ich habe auch eine andere Klasse "EmployeeManager", die eine Methode zum Entfernen (Löschen) eines Mitarbeiters hat.Java Bean verwenden primitive oder Wrapper
Mein EmployeeModel:
package at.fh.swenga.employee.model;
import java.util.Date;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import org.springframework.format.annotation.DateTimeFormat;
public class EmployeeModel implements Comparable<EmployeeModel> {
@Min(1)
private int ssn;
private String firstName;
private String lastName;
private int salary;
@NotNull(message = "{0} is required")
@DateTimeFormat(pattern = "dd.MM.yyyy")
@Past(message = "{0} must be in the past")
private Date dayOfBirth;
public EmployeeModel() {
}
public EmployeeModel(int ssn, String firstName, String lastName, Integer salary,
Date dayOfBirth) {
super();
this.ssn = ssn;
this.firstName = firstName;
this.lastName = lastName;
this.salary = salary;
this.dayOfBirth = dayOfBirth;
}
public int getSsn() {
return ssn;
}
public void setSsn(int ssn) {
this.ssn = ssn;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Date getDayOfBirth() {
return dayOfBirth;
}
public void setDayOfBirth(Date dayOfBirth) {
this.dayOfBirth = dayOfBirth;
}
@Override
public int compareTo(EmployeeModel o) {
return ssn - o.getSsn();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ssn;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
EmployeeModel other = (EmployeeModel) obj;
if (ssn != other.ssn)
return false;
return true;
}
}
Meine Methode in der EmployeeManager Klasse:
public boolean remove(int ssn) {
return employees.remove(new EmployeeModel(ssn, null, null,null, null));
}
Wie Sie die Methode sehen dauert nur SSN, die vom Typ "int" ist. Das Problem ist, wenn mein Konstruktor das Gehalt als int nimmt, muss ich es auch in der Methode bereitstellen, aber ich möchte dies vermeiden. Wie Sie sehen können, hat mein Konstruktor eine Wrapper-Ganzzahl im Gehaltsfeld, aber wann immer ich meine Anwendung starte und versuche, einen Mitarbeiter zu entfernen, bekomme ich NullPointerExceptions?
Meine Frage ist jetzt, warum ich sie bekomme und wenn ich nur eine Wrapper-Klasse bei der Instantiierung wie "private Integer Gehalt" verwenden sollte; anstatt den primitiven Weg zu benutzen?
Meine Frage war nicht über meine DayOfBirth, das funktioniert einfach gut. Bitte versuchen Sie, meine Frage noch einmal zu lesen. Und ja, die ssn ist das einzige Attribut, das benötigt wird, um einen Mitarbeiter zu entfernen, und ich wollte auch nicht das Attribut Gehalt weitergeben, um die Methode – Bajro
zu verwenden. Ich habe dayOfBirth kommentiert, aber auf Ihre Frage fokussiert. Bitte versuchen Sie die Antwort erneut zu lesen und zu verstehen. – pczeus
Darüber hinaus haben Sie keinen relevanten Code hinzugefügt, der zeigt, wie "Mitarbeiter" konstruiert und verwendet werden. Jede weitere Information wäre also nur eine "Vermutung". Bitte lesen Sie: http://stackoverflow.com/help/mcve Informationen zum Erstellen einer minimalen, vollständigen und gültigen Frage. – pczeus