如何在没有特定对象的方法中执行 instanceof?
How can instanceof be preformed inside a method with no specific object?
我的代码充满了这样的东西:
Block attackedBlock = (fixtureA.getUserData() instanceof Block) ? (Block) fixtureA.getUserData() : (Block) fixtureB.getUserData();
Bullet bullet = (fixtureA.getUserData() instanceof Bullet) ? (Bullet) fixtureA.getUserData() : (Bullet) fixtureB.getUserData();
这行得通,但是在我看来它很混乱,所以我想了一个方法来缩短行数:
Fixture getFixture(Class USER_DATA) {
return (fixtureA.getUserData() instanceof USER_DATA) ? fixtureA : fixtureB;
}
我收到 USER_DATA 不是 class 的错误,这是可以理解的,但是如何让它在指定的 class 中显示?它还说该条件将始终评估为 false/我应该怎么做?
你应该这样做:
USER_DATA.isInstance(fixtureA.getUserData())
您需要 Class
类型的参数,因此请调用 getFixture(Player.class)
。
我的代码充满了这样的东西:
Block attackedBlock = (fixtureA.getUserData() instanceof Block) ? (Block) fixtureA.getUserData() : (Block) fixtureB.getUserData();
Bullet bullet = (fixtureA.getUserData() instanceof Bullet) ? (Bullet) fixtureA.getUserData() : (Bullet) fixtureB.getUserData();
这行得通,但是在我看来它很混乱,所以我想了一个方法来缩短行数:
Fixture getFixture(Class USER_DATA) {
return (fixtureA.getUserData() instanceof USER_DATA) ? fixtureA : fixtureB;
}
我收到 USER_DATA 不是 class 的错误,这是可以理解的,但是如何让它在指定的 class 中显示?它还说该条件将始终评估为 false/我应该怎么做?
你应该这样做:
USER_DATA.isInstance(fixtureA.getUserData())
您需要 Class
类型的参数,因此请调用 getFixture(Player.class)
。