java - 访问类内ArrayList的变量

标签 java class arraylist getter

Task 类描述企业的任务,其中包括变量:日期、描述、完成任务所需的总小时数以及任务的所有者。

为所有名为tasks的任务创建一个ArrayList。问题是一个任务可以有多个所有者,这意味着创建一个名为所有者的变量不起作用,所以我所做的是创建另一个名为 TaskOwner 的类,并将该类实现为Task 类中名为 taskOwnerArrayList

现在解决问题:您应该能够列出特定所有者的任务:这意味着您需要将所有者与您在键盘上输入的名称进行比较。

问题出在这几行代码中:

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/

相关文章:

Java 空指针异常和堆栈溢出错误

java - 计算 n = ~11000 + 带有内存的斐波那契递归方法时的堆栈溢出

java - 如何通过在java中向用户发送邮件来创建密码重置链接的链接

java - 如何在启动时自动显示软键盘?

css - 按钮不显示图像

php - 从 array_map 匿名函数内部调用类方法

java - 如何将一个 ArrayList 的内容移动到另一个?

java - 如何在 wsdl 中定义根 SOAP 服务

c++ - 类前向声明​​ C++

java - 通过其实例变量之一对对象的 ArrayList 进行排序