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类.
因此,对于我的代码必须创建一个类的Set的EmployeeS的我已经做了
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)
这在这里没有意义:
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)