我有一个班级Player
,其中有三个变量,其中一个是List<List<Box>>
,当然班级Box
确实实现了Serializable
。
Box
也有一些变量,除了类Dice
之外,它们都是原始类型,它也实现了Serializable
。
我必须通过带有套接字的网络发送此类,当我将其发送到客户端时,List<List<Box>>
看起来没问题,而每个Box
也是如此,问题是{{1}应该在Dice
中的类总是设置为null,即使我从服务器发送给客户端的那个不是,我绝对确定网络部分是正确的。
忘记在实例化时Box
变成List<List<Box>>
,应该是Serializable。
ArrayList<ArrayList<Box>>
上课:
Dice
package ingsw.model;
import java.io.Serializable;
import java.util.Random;
public class Dice implements Serializable {
private int faceUpValue;
private final Color diceColor;
public Dice(Color diceColor) {
this.diceColor = diceColor;
}
public Dice(int faceUpValue, Color diceColor) {
this.faceUpValue = faceUpValue;
this.diceColor = diceColor;
}
/**
* Draft the dice
* get a random number between 1 and 6 and set the faceUpValue
*/
void roll() {
int value = (new Random()).nextInt(6) + 1;
setFaceUpValue(value);
}
public int getFaceUpValue() {
return faceUpValue;
}
public void setFaceUpValue(int faceUpValue) {
this.faceUpValue = faceUpValue;
}
public Color getDiceColor() {
return diceColor;
}
@Override
public String toString() {
if (faceUpValue != 0) {
return diceColor.toString() + String.valueOf(faceUpValue);
} else {
return diceColor.toString();
}
}
}
类实现Serializable:
Card
public abstract class PatternCard extends Card {
private int difficulty;
protected List<List<Box>> grid;
public PatternCard(String name, int difficulty) {
super(name);
fillGrid();
this.difficulty = difficulty;
}
@Override
public String toString() {
return "PatternCard{" +
"'" + getName() + "'" +
'}';
}
public int getDifficulty() {
return difficulty;
}
public void setGrid(List<List<Box>> grid) {
this.grid = grid;
}
public List<List<Box>> getGrid() {
return grid;
}
private void fillGrid() {
this.grid = new ArrayList<>(4);
this.grid.add(new ArrayList<>(5));
this.grid.add(new ArrayList<>(5));
this.grid.add(new ArrayList<>(5));
this.grid.add(new ArrayList<>(5));
}
}
上课:
Box
我已经调查了一下,并认为我应该自行序列化对象并对其进行反序列化,但我不知道这可能是真正的问题,因为ArrayLists是Serializable和每个对象这些ArrayLists也包括在内。
这可能有什么问题?