如何在没有特定对象的方法中执行 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)