Task
类描述企业的任务,其中包括变量:日期、描述、完成任务所需的总小时数以及任务的所有者。
为所有名为tasks的任务创建一个ArrayList
。问题是一个任务可以有多个所有者,这意味着创建一个名为所有者的变量不起作用,所以我所做的是创建另一个名为 TaskOwner
的类,并将该类实现为Task
类中名为 taskOwner 的 ArrayList
。
现在解决问题:您应该能够列出特定所有者的任务:这意味着您需要将所有者与您在键盘上输入的名称进行比较。
问题出在这几行代码中:
System.out.println("What name of owner do you want to list tasks for: ");
String nameOfOwner = keyboard.nextLine();
if (nameOfOwner.toLowerCase().equals(tasks.get(1).getTaskOwner().getName().toLowerCase())) {
System.out.println(tasks.get(1));
}
我似乎无法访问TaskOwner
类中名为name的变量,即使我已经为所需的所有内容创建了getter,所以有人知道吗我应该如何访问这些信息?
我收到的错误消息是:
The method getName() is undefined for the type ArrayList
最佳答案
getTaskOwner
似乎返回一个 ArrayList
类型的对象,而不是 TaskOwner
(这就是错误消息所指示的)。换句话说,它返回所有者列表。要调用 getName()
方法,您需要循环遍历此列表,并对与 TaskOwner
实例对应的每个元素调用该方法。
System.out.println("What name of owner do you want to list tasks for: ");
String nameOfOwner = keyboard.nextLine();
for(int i = 0; i < tasks.size(); i++) {
List<TaskOwner> owners = tasks.get(i).getTaskOwner();
for(TaskOwner owner : owners) {
if (nameOfOwner.toLowerCase().equals(owner.getName().toLowerCase())) {
System.out.println(tasks.get(i));
break;
}
}
}
关于java - 访问类内ArrayList的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27658516/