2017-09-29 60 views
0

我遇到一个问题,我的代码登录表单链接到我的企业社会责任的形式对员工重定向到正确的形式。我有一个Staff类和一个CustomerServiceRep类,CustomerServiceRep扩展到Staff。代码不兼容的类型:员工不能转换为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); 

      } 

我收到错误“不兼容的类型:员工不能转换到CustomerServiceRep”在为EMP

    Z_Frm_CSR CSRDash = new Z_Frm_CSR(emp); 

我是新来这个网站,相当新的编码,我不知道我是否提供了有关我的错误的足够信息,如果没有给出,请询问更多信息。

回答

0

您需要进行显式强制转换,因为您的Z_Frm_CSR构造函数可能在其声明(CustomerServiceRep)中使用显式类型,而不是基类(Staff)或泛型类型(T extends Staff)。

所以: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

在这种情况下,物体确实是一个教员对象(不是从你的代码清楚),而不是一个CustomerServiceRep对象。如果该类真的需要一个CustomerServiceRep对象,那么它需要是该对象类型。如果它也可以是一个教员对象,改变构造函数,因此它可以采取一个教员对象或添加一个构造函数一个教员对象。 Java不会自动为您转换类型。 – Xyrus

+0

我改变了我的CustomerServiceRep EMP = null来的工作人员,现在可感谢您的帮助 – Ryan

相关问题