我有一个抽象的Person
类,它有三个子类:Admin
、Employee
和Student
。只有一个管理对象。
我还有一个类,它的“名称”是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”,然后打印它的值,但我不想每次都检查整个person
arrayList!我只想要一个方法,它接受Person
的子级(Employee
和Student
等)并打印它们。
将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方法时,我希望它打印出第一项。当我第二次调用它时,我希望它打印出第二项。当我第三次叫它时,我想把第三项打印出来。。等等 我该怎么做?