2017-09-29 13 views
0

ログインフォームを自分のcsrフォームにリンクして、スタッフを正しいフォームにリダイレクトするコードに問題が発生しました。私は、StaffクラスとCustomerServiceRepクラスを持ち、CustomerServiceRepクラスにはStaffクラスがあります。コードは、私が「互換性のない型を:スタッフがCustomerServiceRepに変換することができません」というエラーを取得しています互換性のないタイプ:スタッフをCustomerServiceRepに変換できません

 //staff object to store staff logged in successfully 
     Staff emp = null; 

     /*Use core to store staff logged in should return an staff 
     object if username/password found OR null if credentials invalid*/ 

     emp = core.login(username, password); 

     if (emp==null){//staff not found 

       //display feedback 
     pop.showMessageDialog(
      null, 
      "Login Credentials Invalid", 
      "Errors", 
      JOptionPane.ERROR_MESSAGE 
     ); 
     }else{//staff found, redirect to dashboard 

      pop.showMessageDialog(
      null, 
      "Login Successful", 
      "Feedback", 
      JOptionPane.INFORMATION_MESSAGE 
     ); 
      //redirect user to appropriate dashboard 
      if(emp.getRole().equals("csr")){ 
       //go to csr dash 

       //hide the login form(current form) 
       this.setVisible(false); 

       /**create new instance of AdminDashboard form and 
       * pass the instance of Staff (emp) who 
       * has logged in successfully 
       */ 
       Z_Frm_CSR CSRDash = new Z_Frm_CSR(emp); 

       //Show CSR Dashboard 
       CSRDash.setVisible(true); 

      } 

あるEMP

    Z_Frm_CSR CSRDash = new Z_Frm_CSR(emp); 

のために私はこのサイトに新しいと私はいけないコーディングにかなり新しいです私が私のエラーに関する十分な情報を提供したかどうかを知っていれば、それが与えられていないならば、もっと情報を求めてください

答えて

0

Z_Frm_CSRのコンストラクタは、基本クラス(Staff)やジェネリック型(T extends Staff)ではなく、宣言(CustomerServiceRep)の明示的な型を使用する可能性があるため、明示的キャストを行う必要があります。だから、

Z_Frm_CSR CSRDash = new Z_Frm_CSR((CustomerServiceRep)emp);

+0

も例外エラーを取得イムない:スレッドの例外 "AWT-EventQueueの-0" とjava.lang.ClassCastException:athenas.garden.system.Staffはathenas.garden.systemにキャストすることはできません.CustomerServiceRep – Ryan

+0

この場合、オブジェクトは実際にはStaffオブジェクト(コードからはわかりません)であり、CustomerServiceRepオブジェクトではありません。クラスに本当にCustomerServiceRepオブジェクトが必要な場合は、そのオブジェクト型である必要があります。それがスタッフオブジェクトでもよい場合は、コンストラクタを変更して、スタッフオブジェクトを取得したり、スタッフオブジェクトを取得するコンストラクタを追加したりすることができます。 Javaは自動的にタイプを変換しません。 – Xyrus

+0

私はCustomerServiceRep emp = nullをstaffに変更しました。 – Ryan

関連する問題