2017-04-02 67 views
0

我的代码是充满了这样的事情:如何在没有特定对象的方法中执行instanceof?

Block attackedBlock = (fixtureA.getUserData() instanceof Block) ? (Block) fixtureA.getUserData() : (Block) fixtureB.getUserData(); 
Bullet bullet  = (fixtureA.getUserData() instanceof Bullet) ? (Bullet) fixtureA.getUserData() : (Bullet) fixtureB.getUserData(); 

而这个作品,但它是相当混乱IMO,所以我做了缩短线路的方法:

Fixture getFixture(Class USER_DATA) { 
    return (fixtureA.getUserData() instanceof USER_DATA) ? fixtureA : fixtureB; 
} 

我得到的错误USER_DATA不是一个类,这是可以理解的,但是如何让它看起来在指定的类中?它还表示,这种情况总会被评估为假/我该怎么办?

回答

1

你需要Class类型的参数,所以叫getFixture(Player.class)

1

你应该这样做,而不是:

USER_DATA.isInstance(fixtureA.getUserData()) 
+0

但是,这个工作,我该如何调用这种方法? ((Interactant)getFixture(Player))。body.applyLinearImpulse(new Vector2(4f,1f).scl(1/Finals.PPM),((Interactant)getFixture(Player))这是当前调用: 。 body.getWorldCenter(),true);' 但是这表示表达预期 –

+0

我想你可能想发布一个新的问题。 – john16384

相关问题