2016-04-30 24 views
5

我有问题从一个类获取方法工作,如果我把对象放入一个集合。使用从一个类到一组的方法

所以我

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


    public Employee(String employNum) { 
     super(); 
     this.employeeNumber = employNum;    
    } 

...

public String getFirstName() { 
    return this.firstName; 
} 

还有很多其他的代码,如果需要的话,我可以张贴,但我不能改变Employee类。

所以对我的代码必须创建一个类EmployeeSet A S,我已经与

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

    public Records() { 
    } 
} 

做现在我需要将打印组中的所有员工的详细信息的方法。这里是我的尝试,到目前为止

public void printEmployeeNames() { 
    for (String employee : employeeSet) { 
     System.out.println(this.employeeSet.getFirstName()); 
    } 
} 

我遇到的问题是,它不会编译,因为它说

“不兼容类型”

突出 employeeSet
for (String employee : employeeSet) 

我的另一个问题是它不能访问012的方法。我试图孤立使用

public void printEmployeeNames() { 
    System.out.println(this.employeeSet.getFirstName()); 
} 

这也将无法编译的方法,因为它规定

“无法找到符号 - 方法的getFirstName()”。

编辑。 感谢您对这个问题的帮助,我将它改为这个,它工作。

public void printEmployees() 
    { 
    for (Employee employee: employeeSet) 
    { 
     System.out.println(employee.getFirstName()); 
    } 
    } 

回答

2

这个位置是没有意义的:

for (String employee: employeeSet) 
{ 
    System.out.println(this.employeeSet.getFirstName()); 
} 

因为employeeSet是一个集和集没有一个所谓的getFirstName

你必须做的方法:

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

,并创建员工类别相应的安装员和获得者

在这种情况下:

private String firstName; 

    /** 
    * @return the employeeNumber 
    */ 
    public final String getEmployeeNumber() { 
     return firstName; 
    } 
+0

的getter和setter方法已经在那里,我只是不包括他们的简洁。感谢您的帮助,虽然 –

+0

欢迎您... –

1

这应该是

for (Employee employee: employeeSet) 
{ 
    System.out.println(employee.getFirstName()); 
} 

Set没有一个名字方法。你的employee对象有。

1

首先,您是否听说过encapsulation?声明public Set<Employee> employeeSet是一个不好的做法的例子,你应该使用一个私人领域与某种吸气剂。您for循环提高错误的原因是,你犯了两个错误:

  1. employeeSetList<Employee>,而你迭代它时,要求一个String。这是不正确的 - 将employee的类型更改为Employee

  2. 您正在尝试从您的字段employeeSet访问getFirstName()。这是行不通的,因为Set没有这样的方法。我相信你打算打电话给employee

此外,您还可以用Java 8 streams简化代码下面的一行:

public void printEmployeeNames() { 
    employeeSet.stream().map(Employee::getFirstName).forEach(System.out::println); 
} 
相关问题