【问题标题】:How can instanceof be preformed inside a method with no specific object?如何在没有特定对象的方法中执行 instanceof?
【发布时间】:2017-04-02 08:44:10
【问题描述】:

我的代码充满了这样的东西:

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 不是类的错误,这是可以理解的,但是如何让它在指定的类中看起来呢?它还说那个条件总是会评估为假/我该怎么办?

【问题讨论】:

    标签: java class object instanceof


    【解决方案1】:

    你需要一个Class类型的参数,所以调用getFixture(Player.class)

    【讨论】:

      【解决方案2】:

      你应该这样做:

       USER_DATA.isInstance(fixtureA.getUserData())
      

      【讨论】:

      • 这行得通,但是,我该如何调用这个方法?这是当前通话:((Interactant) getFixture(Player)).body.applyLinearImpulse(new Vector2(4f, 1f).scl(1 / Finals.PPM), ((Interactant) getFixture(Player)).body.getWorldCenter(), true); 但这表示预期表达式
      • 我想你可能想为此发布一个新问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      相关资源
      最近更新 更多