2016-08-30 7 views
-2

以下のクラスは私のメインクラスです。私のarraylistは "従業員"のタイプであり、arraylistは複数のオブジェクト(多形性)である多くの要素を含んでいます。だから私は、ユーザーがクラス名を入力するとき、私はその特定のクラスの従業員をarraylistからプリントアウトする必要があることを知りたい。例えば、ユーザが「外科医」を入力すると、プログラムは、外科医のすべての従業員をarraylistからプリントアウトできるはずです。助けてください、ありがとうございます。Javaの抽象クラス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 
    } 
} 
+2

問題をコード化しようとしていますか?問題をコーディングしても、実際の問題をコーディングしていないとしても、ここではあまり役に立ちません。 –

+0

オペレータのインスタンス – Kode

+0

を試すこともできます。この問題を解決するために努力していますか。私は、他の人のためのコードを書いているだけではなく、特に答えが本当にそれほど難しくないときは特に興味がありません。 – markspace

答えて

2

これを行うにはThe Reflection APIを使用できます。 例えば:

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

あなたが最良のthis記事を考慮し合ったものを選びました。

+0

ありがとうございます – supa

+0

私はupvoteしようとしましたが、私は高い評判を持っている必要があります – supa

+0

ちょうど投票ブトンの下で受け入れるをクリックしてください。記事のように:http://meta.stackoverflow.com/questions/251078/how-to-update-and-accept-answers –

関連する問題