我正在为一个学校项目创建一个游戏,我有 2 个名为 Pieces 和 Powers 的类,有子类 Piece_Yellow、Piece_Blue ... 和 Power_Explode、Power_ChangeColor 等...
我是用枚举做的,这个网站上的某个人(更准确地说是 mikera)帮助我改变了这一点,并与碎片和权力建立了更好的互动。
但是现在我必须更改旧代码,并且我遇到了问题,因为我是这样做的:
int x = 10, y = 5;
for (int i=0; i<10; i++) {
if (pecas[x][y] == null)
pecas[x][y] = new Piece(arrayPecas.get(rand.nextInt(arrayPecas.size())));
}
像这样,我的数组部分填充了 10 个不同颜色的新对象(但没有权力,这就是问题所在),并且每个对象都有不同的哈希码(用于稍后查找、比较和删除这些对象)......
但是由于我们不能初始化一个抽象类,我发现这个问题的唯一解决方案是这样做:
int x = 10, y = 5;
for (int i=0; i<10; i++) {
if (pecas[x][y] == null)
pecas[x][y] = arrayPecas.get(rand.nextInt(arrayPecas.size()));
}
像这样仍然添加了对象,但现在我有 1 个问题: 1 - 来自具有相同颜色的部分的所有哈希码都是相同的......我真的不知道如何解决这个问题。我读过我可以覆盖 hashcode 方法,但没有信息可以区分它们(而且我无法存储位置,因为每次更改位置时我都必须更改它)。