我收到错误并且不确定原因,
这是我的项目设置:
每当我运行引用Book.java的服务器方法时,我都会收到此错误消息
java.lang.ClassCastException: com.client.Book cannot be cast to com.server.Book
我可以在客户端和服务器上没有相同的类吗?
这是我的Book
类
*唯一的区别在于包装声明
package com.client; /* on client side*/
package com.server; /* on server side */
import java.io.Serializable;
public class Book implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name, author;
private int copiesAvail;
private int daysToReturn;
public Book()
{
}
public Book (String name, String author)
{
this.name = name;
this.author = author;
copiesAvail = 1;
daysToReturn = 0;
}
// getters
public String getName() {return name;}
public String getAuthor() {return author;}
public int getCopiesAvail() {return copiesAvail;}
public int getDaysToReturn() {return daysToReturn;}
// setters
public void setName(String name) {this.name = name;}
public void setAuthor(String author) {this.author= author;}
public void setCopiesAvail(int copiesAvail) {this.copiesAvail = copiesAvail;}
public void setDaysToReturn(int daysToReturn) {this.daysToReturn = daysToReturn;}
public String toString()
{
return "Name: " + getName()
+ "\nAuthor: " + getAuthor()
+ "\nNumber of Copies Available: " + getCopiesAvail();
}
}
可能导致此错误的原因是什么?
答案 0 :(得分:1)
你可以同时拥有(Book.java在客户端包和服务器包上)。但你为什么那样做?他们做同样的工作,所以不需要两个班。
删除一个类并使用另一个类。这也可以解决您的问题。并将该类移动到中性包中,因为它在服务器端的两端都使用。
希望它有所帮助。
答案 1 :(得分:1)
这两个类虽然名称相同,但却是两个完全不同的,不兼容的类。客户端包和服务器包中的Book没有Is-A关系,因此转换肯定会失败。
您不必拥有两个具有完全相同实现的类。如果客户端和服务器都使用此类,则标准方法是将此类放在另一个包中,例如“common”,并在客户端和服务器代码之间共享。