Ich habe ein Customer-Objekt in meinem Projekt, das das Benutzerobjekt erweitert.Warum erhalte ich diesen Cast-Fehler?
User.java
public class User {
private int userId;
private int user_type;
private String username;
private String password;
public User(int id, int user_type, String username, String password) {
super();
this.userId = id;
this.user_type = user_type;
this.username = username;
this.password = password;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getUser_type() {
return user_type;
}
public void setUser_type(int user_type) {
this.user_type = user_type;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
und meine Customer.java
public class Customer extends User{
private String cartId;
public Customer(int id, int user_type, String username, String password) {
super(id, user_type, username, password);
// TODO Auto-generated constructor stub
}
public String getCartId() {
return cartId;
}
public void setCartId(String cartId) {
this.cartId = cartId;
}
}
Nun habe ich eine einfache Login für meine Website, dass erste Kontrollen eines Benutzers vorhanden ist, und wenn ja, es prüft wenn es ein Kunde oder von der Verwaltung ist. Wenn es ein Kunde ist, habe ich eine Methode, die seine Einkaufswagen-ID abruft. Dann gieße ich den Benutzer auf Kundentyp und setze dann die Warenkorb-ID über Setter.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean userDoesNotExist = false;
User user = ServiceFactory.userService().getUser(username);
System.out.println(user.getPassword() + " " + user.getUsername());
if(user != null){
if(user.getUser_type() == 1){
String cartId = ServiceFactory.customerService().getCartId(user.getUserId());
Customer customer = (Customer) user;
customer.setCartId(cartId);
request.getSession().setAttribute("customer", customer);
response.sendRedirect("customer");
}else{
}
}else{
userDoesNotExist = true;
request.setAttribute("userDoesNotExist", userDoesNotExist);
request.setAttribute("username", username);
RequestDispatcherManager.dispatch(this, "/login.jsp", request, response);
}
}
Also, auf meine Frage zurück, warum bin ich immer ...
java.lang.ClassCastException: com.qbryx.domain.User cannot be cast to com.qbryx.domain.Customer
com.qbryx.servlets.LoginServlet.doPost(LoginServlet.java:50)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)