我在数组集合中有游戏对象,但它们可以是不同的类。我可以通过它的坐标找到对象:
Object obb = grid.getCellContent(insertObjectX, insertObjectY);
我需要做的是查找是否 obb.canBeSubmerged == true ,然后简单地将其移动到另一个数组。
问题是我无法获得该对象“canBeSubmerged”的属性,因为编译器不知道我使用了哪个类。
我想知道是否有一种更快的方法来完成"obb.getClass() == myClass.class"
每个可能的对象类的语句。
. .
编辑:基于无卡住的建议,这里是一个可行的解决方案:
try {
java.lang.reflect.Field f1 = obb.getClass().getField("canBeSubmerged");
java.lang.reflect.Field f2 = obb.getClass().getField("subObject");
if (f1 != null) {
canBeSubmerged = f1.getBoolean(obb);
f2.setBoolean(obb, canBeSubmerged);
}
}catch (Exception e) { }
//enter it into the submerged grid level and remove from the top grid level
if (canBeSubmerged){
grid.removeObject(insertObjectX, insertObjectY);
grid.putSubObjectInCell(insertObjectX, insertObjectY, obb);
}