私は "EmployeeModel"という名前のBeanを持っています。従業員を削除(削除)する方法もある別のクラス "EmployeeManager"もあります。Java Beanプリミティブまたはラッパー
マイEmployeeModel:EmployeeManagerクラスで
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;
}
}
私の方法:あなたが方法を見ることができるように
public boolean remove(int ssn) {
return employees.remove(new EmployeeModel(ssn, null, null,null, null));
}
唯一のタイプ "int型" であるSSNをとります。 問題は、私のコンストラクタが給料をintとして受け取ったときに、私はメソッドでそれを提供する必要がありますが、私はこれを避けたいと思います。あなたが見ることができるように私のコンストラクタは、給与フィールドでラッパー整数を持っていますが、私は私のアプリケーションを開始し、従業員を削除しようとするたびに、私はNullPointerExceptionsを得ていますか?
私の質問は、なぜ私がそれらを手に入れているのか、私はインスタンス化時に "private Integer salary;"というラッパークラスを使うべきかどうかです。プリミティブな方法を使うのではなく?
私の質問は私のdayOfBirthに関するものではなく、これはうまくいきます。私の質問をもう一度読んでみてください。はい、ssnは従業員を削除するために必要な唯一の属性であり、私はメソッドを使用するために属性給与を渡したくありませんでした – Bajro
私はdayOfBirthにコメントしましたが、あなたの質問に集中しました。答えをもう一度読んで理解してください。 – pczeus
それに加えて、「従業員」がどのように構築され、使用されているかを示す関連コードを追加しませんでした。したがって、それ以上の情報は「推測」だけになります。最小限の、完全で有効な質問を作成するための情報については、http://stackoverflow.com/help/mcveをお読みください。 – pczeus