我尝试使用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();
}
}
答案 0 :(得分:0)
选项1:您可以在其他类中创建DropPod的新实例。使用此实例,您只需调用Object.getPod()。
选项2:您已经提到了这一点,但您也可以将land设为静态方法,DropPod.getPod()应该可以使用。
答案 1 :(得分:0)
类的静态方法不能引用其对象的非静态方法。 如果您只需要1个DropPod实例,则可以将其添加为自己类的属性。类似于Singleton Pattern。
答案 2 :(得分:0)
为没有参数的getPod()
添加非静态重载,只调用land()
。
也许完全删除静态版本。很难理解为什么这个方法实际上存在,或者为什么当它没有返回任何东西时被称为getPod()
。我会将其删除,然后直接致电land()
。
当你没有任何东西可以登陆时,也很难理解你为什么要打电话给land()
的方法。你需要重新考虑这一切。