java android getClass

时间:2013-12-01 19:41:28

标签: java android

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?

1 个答案:

答案 0 :(得分:1)

您已将b1声明为Class<?>。当然,b1.falling == true是一个编译错误,因为Class<?>没有falling字段。

你想要的是将Class<?> b1;更改为BLK / STN的超类,以便它可以保存这些类的实例,在最坏的情况下,如果没有其他超类比Object(后来使用强制转换来访问字段):

Object b1;