2017-04-02 32 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

相關問題