当前位置: 首页 > 知识库问答 >
问题:

创建用java打印子arrayList项的方法

方砚
2023-03-14

我有一个抽象的Person类,它有三个子类:AdminEmployeeStudent。只有一个管理对象

我还有一个类,它的“名称”是statics,它包含我需要的所有公共数据,如下所示:

public class Statics {  

private static Person currentLoginUser;
private static ArrayList<Person> people = new ArrayList<>();
private static ArrayList<Student> students = new ArrayList<>();
private static ArrayList<Employee> employees = new ArrayList<>();
//We don't need ArrayList<Admin> because there is only one admin in the whole program

//Adder and getter methods:
//...
}
Person admin = new Admin(); //`Admin` extends `Person`
//Admin class:
public void printList(ArrayList<Person> people){
//Do something
}

让我们假设admin希望看到学生的列表:我这样称呼它:

ArrayList<Student> s = Statics.getStudents();
((Admin)admin).printList(s); //admin object was created by `Person` class so I have to cast it to (Admin) to use `Admin`'s own methods.

它(eclipse)说:

类型Admin中的方法printList(ArrayList<Person>)不适用于参数(ArrayList<Student>)

我试着把它投给Person:

((Admin)admin).printList((ArrayList<Person>)s);

无法从ArrayList<Student>强制转换为ArrayList<Person>

在这个链接中,答案是传递主arrayList并检查它的对象是否来自类型“student”,然后打印它的值,但我不想每次都检查整个personarrayList!我只想要一个方法,它接受Person的子级(EmployeeStudent等)并打印它们。

共有1个答案

督坚白
2023-03-14

printlist方法签名更改为:

java prettyprint-override">public void printList(ArrayList<? extends Person> people)

说明:

更改签名将允许您传递用Person或其子类参数化的ArrayList

有关泛型的更多信息,请参阅泛型(Java教程)

 类似资料:
  • 我正在编写一个程序来模拟咖啡馆中的一个系统,在这个系统中,接受顾客订单的人给顾客一个代币号码,并将顾客的代币号码以及他/她订购的物品输入到一个系统中。recordOrder功能执行此操作,允许输入订单详细信息。订单由令牌ID、tID和表示订单中项目的字符串数组列表表示。 以下是我到目前为止所做的: 问题是,只有我输入的最后一个项目被打印出来,也就是说,假设我输入的令牌编号为9,项目编号为3,项目名

  • 问题内容: 我如何在arraylist“列表”中打印元素“ e”? 问题答案: 您是要打印整个列表还是要遍历列表的每个元素?两种打印您的类有意义的东西的方法都需要重写该类的方法(如其他答案所述)以返回有效结果。 此代码的输出是:

  • 问题内容: 假设我有一个名为的课程, 我想创建一个新的ArrayList,其值将为type 。 我的问题是:我该怎么做? 我不懂Java Api。 我尝试了这个: 问题答案: 您正在寻找Java泛型 这是一个教程http://docs.oracle.com/javase/tutorial/java/generics/index.html

  • 问题内容: 我们正在寻找替代方法,以替代当前通过小程序在Java Web应用程序中打印支票的方式。似乎共识是使用PDF进行打印,而itext提供了使用Java进行打印的功能。 但是 ,在我们的特殊情况下,支票是“仅打印”的,这一点很重要- 用户在应用程序中不应该具有保存支票的任何能力(我知道精明的用户可以做一个PrintScreen,但我们想遮盖住后盖,在应用程序中不进行任何本机功能来保存支票)。

  • 问题内容: 我有以下java类 我正在从数据库中检索数据并将其添加到我的数组列表中,如下所示 但是当我尝试打印存储在数组列表中的值时。它总是给我最后插入的记录。 问题答案: 这里, 您将所有记录重复使用相同的实例。实例的数据在循环中每次都被覆盖。该列表不包含实例的副本,但包含单个实例的 引用 的副本。您知道,Java是面向对象的。 您应该为每个记录创建一个新实例。将实例移到循环内部。 与 具体问题

  • 我将尝试解释我的问题。我有一个带有几个字符串的Arraylist。我有一个输出方法: 因此,根据我需要的数据,我可以使用我的输出方法并输入我的值。如果我输入0作为testIndex,它将打印“test1”。 不过我想让它变得更好一点。我想做的是,每当我调用output方法时,我希望它打印出第一项。当我第二次调用它时,我希望它打印出第二项。当我第三次叫它时,我想把第三项打印出来。。等等 我该怎么做?