Class<?> b1;
b1 = GS.scr_check_freebox(x, y-GS.ss, this);
if ( b1.getClass().equals(BLK.class) || b1.getClass().equals(STN.class) )
{
if (b1.falling == true)
{
scr_cascade_fall(scr_check_freebox(x, y-GS.ss, this));
return (true);
}
}
函数“scr_get_freebox”搜索BLK和STN的所有实例,并返回它找到的第一个实例,它全部或部分存在于你传递它的坐标的左上角的框内,但它将从它的搜索中排除通过它的“这个”。除了它返回null或BLK的实例或STN的实例之外,它并不重要。
在第5行给出错误,其中显示“if(b1.falling == true)” 问题是,这些类(BLK和STN)都有一个名为fall的布尔变量。编译器在这里很蠢。
我如何摆脱这个错误?有没有一种特殊的方法来使用getClass()或instanceof?
答案 0 :(得分:1)
您已将b1
声明为Class<?>
。当然,b1.falling == true
是一个编译错误,因为Class<?>
没有falling
字段。
你想要的是将Class<?> b1;
更改为BLK
/ STN
的超类,以便它可以保存这些类的实例,在最坏的情况下,如果没有其他超类比Object
(后来使用强制转换来访问字段):
Object b1;