首页 > 解决方案 > 如何将一个对象投射到另一个对象

问题描述

我是 Java 初学者,在我现有的公司应用程序中有以下 2 个 Beans/POJOS:

用户

public class User {

public int getUserId() {
    return userId;
}

public void setUserId(int userId) {
    this.userId = userId;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

}

员工

public class Employee {


public int getUserId() {
    return userId;
}
public void setUserId(int userId) {
    this.userId = userId;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}

}

我想转换User为,Employee因为在应用程序中,我将在User用于持久化到databaseusing hibernate3xml 映射方法的方法之一中接收对象。HIbernate映射存在于Employee对象而不是User. 因此,我尝试使用以下概念进行转换,即 java 中的所有内容都是一个对象,但它仍然给出 RuntimeException ClassCastException

User u = new User(12,"johnson","pam",new Date());
Object o = u;
Employee e=(Employee)o;

有没有其他方法可以解决这个问题?没有选项可以更改现有的类层次结构或包含任何其他继承结构。

标签: javahibernatehibernate-xml-mapping

解决方案


您根本无法在 Java 中转换对象。您可以将引用强制转换为被引用对象实现的类型。

您可以做的是一个对象转换为一个新对象。如果你不能修改类,你可以写一个外部转换器。例如:

public class EmployeeFactory {
    public static Employee toEmployee( User user ) {
        Employee emp = new Employee();
        emp.setUserId( user.getUserId() );
        emp.setUserName( user.getUserName());
        return emp;
    }
}

推荐阅读