Java类setter没有为类字段设置正确的值。

时间:2015-08-02 15:32:05

标签: java class null field instance

我有一个简单的java程序我无法弄清楚为什么类的setter不会设置正确的值。

我有班级员工,班级部门,班级公司。一旦我能够为Employee实例的字段设置正确的值,我就会将该员工存储在Department(arrayList字段)实例中的员工的arraylist中。

这个名为Employee的类。它有四个字段,String fName,String lName,int age,String department。我可以设置fName和lName,虽然age始终设置为0,而department总是设置为null。

以下是员工类的代码:

public class Employee {
private String fName;
private String lName;
private String department;
private int age;

//getters and setters for the private fields of the Employee class
public void setAge(int num){
    num = age; 
}

public int getAge(){
    return age;
}

public void setDepartment(String dep){
    dep = department; 
}

public String getDepartment(){
    return department;
}

public void setfName(String afName){
    fName = afName;
}

public String getfName(){
    return fName;
}

public void setlName(String alName){
    lName = alName;
}

public String getlName(){
    return lName;
}
}

以下是名为addEmployee的方法的代码:

public void AddEmployee(Department depInstance){
    String firstName = JOptionPane.showInputDialog("Enter employee First name");
    String lastName = JOptionPane.showInputDialog("Enter employee last name");
    int empAge = Integer.parseInt(JOptionPane.showInputDialog("Enter employee age"));
    String empDep = JOptionPane.showInputDialog("Enter employee department");

    Employee employeeToAdd = new Employee();
    employeeToAdd.setfName(firstName);
    employeeToAdd.setlName(lastName);
    employeeToAdd.setAge(empAge);
    employeeToAdd.setDepartment(empDep);

    //test input and variable setting
    System.out.println("--------Inputs------");
    varTester(firstName,lastName,empAge,empDep);
    System.out.println("--------Recorded Vals------");
    varTester(employeeToAdd.getfName(), employeeToAdd.getlName(),employeeToAdd.getAge(),employeeToAdd.getDepartment());

public static void varTester(String empfName, String emplName, int empAge, String empDep){
    System.out.println(empfName);
    System.out.println(emplName);
    System.out.println(empAge);
    System.out.println(empDep);
}

}

这是测试方法varTester()的输出:

--------Inputs------
Somefirstname
Somelastname
32
Accounting
--------Recorded Vals------
Somefirstname
Somelastname
0
null

我测试从showInputDialog收到的值,它是我想要存储在employeeToAdd的类实例字段中的正确值,尽管只设置了名字和姓氏值,而不是年龄或部门。有人能指出我正确的方向。谢谢。

3 个答案:

答案 0 :(得分:2)

你倒装了。它应该是:

public void setAge(int num){
    age = num; 
}

setDepartment中有同样的错误。

您应该分配给成员变量,而不是分配给setter方法的参数。

答案 1 :(得分:2)

你的setter设置的参数不是私有字段。

public void setAge(int num){
    num = age; 
}

public void setDepartment(String dep){
    dep = department; 
}

将其更改为:

public void setAge(int num){
   age = num; 
}

public void setDepartment(String dep){
   department = dep; 
}

答案 2 :(得分:1)

应该是:

public void setAge(int num){
    age = num; 
}
public void setDepartment(String dep){
    department = dep; 
}