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

为名为task的所有任务创建一个ArrayList。问题是一个任务可以有多个所有者,这意味着创建一个名为所有者的变量将无法工作,所以我要做的是创建了另一个名为TaskOwner的类并将该类实现为名为taskOwner的ArrayListTask类中。

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

问题在于这些代码行:

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的变量,所以有人知道我应该如何访问此信息吗?

我收到的错误消息是:


  对于ArrayList类型,未定义方法getName()

最佳答案

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/

10-10 11:13