使用从一个类到一个集合的方法

M.T*_*row 5 java methods types set hashset

如果我把对象放到一个集合中,我在从一个类获取方法时遇到问题.

所以我有

public class Employee {
    /* instance variables */
    private String firstName;
    private String employeeNumber;


    public Employee(String employNum) {
        super();
        this.employeeNumber = employNum;             
    }
Run Code Online (Sandbox Code Playgroud)

...

public String getFirstName() {
   return this.firstName;
}
Run Code Online (Sandbox Code Playgroud)

如果需要,我可以发布许多其他代码,但我不允许更改Employee类.

因此,对于我的代码必须创建一个类的SetEmployeeS的我已经做了

public class Records {
    public Set<Employee> employeeSet = new HashSet<Employee>();

    public Records() {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我需要一个方法来打印集合中所有员工的详细信息.这是我到目前为止的尝试

public void printEmployeeNames() {
    for (String employee : employeeSet) {
        System.out.println(this.employeeSet.getFirstName());
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它不会像它说的那样编译

"不兼容的类型"

和亮点employeeSet

for (String employee : employeeSet) 
Run Code Online (Sandbox Code Playgroud)

我的另一个问题是它无法访问该方法getFirstName().我试图用这个方法来隔离方法

public void printEmployeeNames() {
    System.out.println(this.employeeSet.getFirstName());
}
Run Code Online (Sandbox Code Playgroud)

这也不会像它所说的那样编译

"找不到符号 - 方法getFirstName()".

编辑.感谢您对此问题的帮助,我将其更改为此并且有效.

public void printEmployees()
   {
     for (Employee employee: employeeSet)
     {
        System.out.println(employee.getFirstName());
     }
  }
Run Code Online (Sandbox Code Playgroud)

ΦXo*_*a ツ 2

这在这里没有意义:

for (String employee: employeeSet)
 {
    System.out.println(this.employeeSet.getFirstName());
 }
Run Code Online (Sandbox Code Playgroud)

因为employeeSet是一个Set并且集合没有一个名为getFirstName的方法

你必须做:

for (Employee employee: employeeSet) //for every EMPLOYEE in the employeeSet
 {
    System.out.println(employee.getFirstName()); //from that employ get the name
 }
Run Code Online (Sandbox Code Playgroud)

并在 Employee 类中创建相应的 Setter 和 getter

在这种情况下:

private String firstName;
    
    /**
     * @return the employeeNumber
     */
    public final String getEmployeeNumber() {
        return firstName;
    }
Run Code Online (Sandbox Code Playgroud)