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

Posted

技术标签:

【中文标题】如何从java中的抽象类arraylist打印特定的对象类型【英文标题】:How to print a specific object type from an abstract class arraylist in java 【发布时间】:2017-01-06 20:26:18 【问题描述】:

下面的课程是我的主要课程。我的数组列表是“员工”的类型,并且该数组列表包含许多属于多个对象的元素(多态性)。所以我想知道当用户输入一个类名时,我应该从arraylist中打印出那个特定类的员工。例如,当用户输入“外科医生”时,程序应该能够从数组列表中打印出所有外科医生员工的姓名。请帮助,提前谢谢。

 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】:

您可以使用The Reflection API 来执行此操作。 例如:

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

考虑this 文章,选择最适合您的一篇。

【讨论】:

我试图投票,但我需要有很高的声誉 请在投票按钮下点击接受。喜欢文章:meta.***.com/questions/251078/… 如果答案对您有帮助,为什么您不接受?不明白。

以上是关于如何从java中的抽象类arraylist打印特定的对象类型的主要内容,如果未能解决你的问题,请参考以下文章

java中的ArrayList打印最后插入的值?

Java集合:List列表

如何使用特定值映射 ArrayList 元素然后打印它

Java集合类ArrayList循环中删除特定元素

如何从ArrayList(Java)打印最短的字符串

如何直接从文件中将项目添加到 Java 中的 ArrayList?