如果我将对象放入集合中,我在从一个类中获取方法时遇到问题。
所以我有
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
类。
因此,对于我的代码,我必须为Set
Employee
创建一个类,我已经完成了
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());
}
}
我遇到的问题是它不会按照说法编译
&#34;不兼容的类型&#34;
并在
中突出显示employeeSet
for (String employee : employeeSet)
我的另一个问题是它无法访问getFirstName()
的方法。我尝试使用
public void printEmployeeNames() {
System.out.println(this.employeeSet.getFirstName());
}
这也无法编译,因为它声明了
&#34;找不到符号 - 方法getFirstName()&#34;。
编辑。 感谢您对此问题的帮助,我将其更改为此并且有效。
public void printEmployees()
{
for (Employee employee: employeeSet)
{
System.out.println(employee.getFirstName());
}
}
答案 0 :(得分:2)
这没有任何意义:
for (Employee employee: employeeSet) //for every EMPLOYEE in the employeeSet
{
System.out.println(employee.getFirstName()); //from that employ get the name
}
因为employeeSet是一个Set而且sets没有一个名为getFirstName的方法
private String firstName;
/**
* @return the employeeNumber
*/
public final String getEmployeeNumber() {
return firstName;
}
在Employee类中创建相应的Setter和getter
在这种情况下:
self.stream.write(data)
答案 1 :(得分:1)
那应该是
for (Employee employee: employeeSet)
{
System.out.println(employee.getFirstName());
}
Set
没有firstname方法。您的employee
对象已有。
答案 2 :(得分:1)
首先,你听说过encapsulation吗?声明public Set<Employee> employeeSet
是一个不好的做法的例子,你应该使用一个带有某种getter的私有字段。你的for
循环引发错误的原因是你犯了两个错误:
employeeSet
是List<Employee>
,而您在迭代时要求String
。这是不正确的 - 将employee
的类型更改为Employee
。
您正试图从您的字段getFirstName()
访问employeeSet
。这不起作用,因为Set
没有这样的方法。我相信您打算在employee
。
此外,您可以使用Java 8 streams:
将代码简化为以下单行代码public void printEmployeeNames() {
employeeSet.stream().map(Employee::getFirstName).forEach(System.out::println);
}