我遇到以下问题。我可以将交易状态设置为“开始,结束或正在进行”。我设置了它,然后将我的Transaction对象序列化到检索它的服务器上。第一次(当事务处于启动模式时)就像魅力一样工作,但是当我重新发送对象时,这次是“正在进行中”模式,服务器继续以“开始”模式看到它。我测试了序列化之前的代码和反序列化之后的代码,这肯定是问题所在。任何帮助将非常感激。相关的代码段如下:Java序列化。字段更改值
序列
if ((query instanceof Transaction) && !(trx.getTransactionState()==Consts.trx_start)) System.out.println("Not start");
oos.writeObject(query);
oos.flush();
反序列化
while (true) {
Object statement = null;
try {
statement = ois.readObject();
if ((statement instanceof Transaction) && !(((Transaction) statement).getTransactionState()==Consts.trx_start)) System.out.println("Not start 2");
handle_statement(statement, socket);
} catch (IOException e) {
和Transaction类:
public class Transaction extends Statement{
/**
*
*/
private static final long serialVersionUID = -2284996855537430822L;
Statement statement_list;
int trx_state;
/**
*
*/
public Transaction() {
trx_state = Consts.trx_start;;
}
/**
* @param statement
*/
public void setStatement(Statement statement) {
statement_list = statement;
}
public void setTransactionState(int state) {
trx_state = state;
}
public int getTransactionState() {
return trx_state;
}
/**
* @return
*/
public Statement getStatement() {
return statement_list;
}
*捂脸*。我认为冲洗会做的伎俩...不知道重置。谢谢。像魅力一样工作 – user1018513
考虑到保留对象图的设计目标,它是唯一可能的设计。 – EJP