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

如何在java中从抽象类arraylist打印特定对象类型

司空玮
2023-03-14

下面的班级是我的主要班级。我的arraylist是“Employee”类型,并且该arraylist包含多个对象的许多元素(多态性)。所以我想知道,当用户输入一个类名时,我应该从ArrayList中打印出那个特定类的employees。例如,当用户输入“Surgeon”时,程序应该能够从ArrayList中打印出所有Surgeon雇员的。请帮忙,提前谢谢。

 import java.util.*;


public class HospitalDatabase {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String q;
        String w;
        ArrayList<Employee> e = new ArrayList<Employee>(); 
        Employee s = new Surgeon("Christian Barnard", 2113211, "Cardiac", "Cardiology",
                2000, "Yale University");
        Employee i = new ITSupport("Mickey Mouse", 11280, Department.IT, 26, "Mac OS");
        Employee n = new Nurse("Florence Nightingale", 54678, "Urgent Care", 
                "Emergency", false, HospitalWing.North);
        Employee p = new PatientAccountsManager("Donald Duck", 32465, Department.PatientSupport, 
                99, true); 
        Employee s1 = new Surgeon("Sanjay Gupta", 42171, "Neurosurgery", 
                "Neurology", 500, "Duke University"); 
        Employee n1 = new Nurse("Mary Breckinridge", 56536, "Gynecology", "Midwife",
                true, HospitalWing.West);


        e.add(s);
        e.add(i);
        e.add(n);
        e.add(p);
        e.add(s1);
        e.add(n1);

        System.out.println(e.toString()); 
        System.out.println(Employee.numEmployees);
        System.out.println("-------------******--------------");

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a name: ");
        q = scan.nextLine();
        boolean j = false; 
        System.out.println("***************");

        for(Employee v: e){
            if(v.name.contains(q)){
                System.out.println(v.name);
                j = true; 
            }
        } 
        if(j == false){
            System.out.println("Name not found");
        }  
        System.out.println("----------------**************---------------");

        Scanner f = new Scanner(System.in);
        System.out.println("Enter the class of employees: ");
        w = f.nextLine();
        System.out.println("***************************"); 

        //PLEASE SHOW THE CODE HERE
    } 
}

共有1个答案

谢旻
2023-03-14

您可以使用反射API来完成此操作。例如:

String className1 = e.getClass().getSimpleName();
String className2 = e.getClass().getName();
String className3 = e.getClass().getCanonicalName();

选择一个最适合你的考虑这篇文章。

 类似资料:
  • 我需要做一个方法,可以添加这些数据类型到一个arraylist内的cart类。但如果我写 它只会接收推车类型的数据,所以我不能输入食物或饮料,或Miscs类型的数据,甚至有相同的细节,如名称和价格。

  • 我通过学校为一项任务提供的简报创建了一个飞机座位预订系统。我遇到了一个我无法解决的主要问题。 摘要说明抽象类必须有一个抽象方法和大约4个公共方法。在抽象类的两个子类中,我们都必须初始化对象数组(所有普通的座位)。然而,一旦它们被初始化,我不知道如何将它们发送回抽象类(该类有一个检查未预订的飞机座位的方法,这就是我需要初始化的座位对象的地方) ArrayIndexOutOfBounds在一个应该在边

  • 问题内容: 如何从ArrayList中删除特定对象?假设我有一个如下课程: 我该如何从我的物品中删除物品 问题答案: 根据该方法删除对象。因此,您应该正确实现此方法。就像是: 要么

  • 是否有任何JAXB绑定可以告诉JAXB代码生成器将Java类生成为,而不必在XSD中将相应的XML类型标记为? 情况如下: > 我在xsd中定义架构: 我使用内联JAXB绑定(“inline”==“直接在模式中”)来指示应该生成JAXB类的包(): 我使用内联JAXB绑定为我的每个复杂类型(在本例中、和)指示实现类的名称: 我从模式生成JAXB类。这导致: 我自己编写类: 使用这两个类层次结构这样

  • 我试图根据用户输入找到一个特定的对象。用户需要输入姓名和性别,然后程序应该搜索ArrayList,查看是否有匹配的姓名和性别。ArrayList中的对象有3个实例变量,但程序只搜索2个。如何在ArrayList中只搜索选定的几个特征? 在我的项目中,我有: 其中,nameList是ArrayList的名称,getName()是返回存储在对象中的名称的方法的名称,getGender()是返回存储在对

  • 我已经创建了几个对象,我想在ArrayList中只打印对象的一个参数: 我要打印: