2017-04-02 6 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は理解できないクラスではありませんが、指定されたクラスをどのように見えるようにするのですか?その条件は常にfalseと評価されます/私は何をすべきですか?

USER_DATA.isInstance(fixtureA.getUserData()) 

答えて

1

あなたがタイプClassのパラメータを必要とするので、getFixture(Player.class)を呼び出す:

1

あなたは代わりにこれを行う必要があります。

+0

しかし、この方法はどのように呼びますか? これは現在の呼び出しです: '((Interactant)getFixture(Player))body.applyLinearImpulse(new Vector2(4f、1f).scl(1/Finals.PPM)、((Interactant)getFixture(Player)) body.getWorldCenter()、true); ' これはExpression Expected –

+0

と書かれていますが、これについて新しい質問を投稿したいと思うかもしれません。 – john16384

関連する問題