如何在另一个类中调用此参数?

时间:2016-01-25 02:03:36

标签: java parameters parameter-passing

我尝试使用getPod从另一个类调用类DropPod中的静态方法DropPod.getPod(),但我需要DropPod.getPod()的参数。 如何更改getPod方法以便我可以从其他类访问它?

我知道我可以让land()静止,但我不想这样做。我想尝试以这种方式学习。

public class DropPod {

    protected static boolean opened;
    int pos = Random.NormalIntRange(1777, 1794);

    public static void getPod(DropPod drop)
    {
        drop.land();
    } 

    public void land() {
        Level.set(pos, Terrain.DROPPOD_CLOSED);
        Game.updateMap(pos);
        opened = false;
        Dungeon.observe();
    }
}

3 个答案:

答案 0 :(得分:0)

选项1:您可以在其他类中创建DropPod的新实例。使用此实例,您只需调用Object.getPod()。

选项2:您已经提到了这一点,但您也可以将land设为静态方法,DropPod.getPod()应​​该可以使用。

答案 1 :(得分:0)

类的静态方法不能引用其对象的非静态方法。 如果您只需要1个DropPod实例,则可以将其添加为自己类的属性。类似于Singleton Pattern

答案 2 :(得分:0)

为没有参数的getPod()添加非静态重载,只调用land()

也许完全删除静态版本。很难理解为什么这个方法实际上存在,或者为什么当它没有返回任何东西时被称为getPod()。我会将其删除,然后直接致电land()

当你没有任何东西可以登陆时,也很难理解你为什么要打电话给land()的方法。你需要重新考虑这一切。