[英]Implementing methods from other classes
我不明白為什么它不起作用?
我有我的方法類:
package particles;
import org.newdawn.slick.Color;
import org.newdawn.slick.Graphics;
public class Methods {
Graphics g;
public void showhud(){
g.setColor(Color.white);
g.drawString("Screen: Game", 675, 10);
g.drawString("Version: 1.0", 675, 25);
}
}
但是,當我嘗試在另一個類中實現showhud()時,它不起作用!
這是即時通訊使用的方式:
package particles;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import particles.Methods;
public class Game extends BasicGameState {
Methods m;
public void init(GameContainer container, StateBasedGame game) throws SlickException {
}
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException {
m.showhud();
}
public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException {
}
public int getID() {
return 0;
}
}
我得到的錯誤是:
Tue Jan 01 17:19:36 NZDT 2013 ERROR:null
java.lang.NullPointerException
at particles.Game.render(Game.java:18)
at org.newdawn.slick.state.StateBasedGame.render(StateBasedGame.java:207)
at org.newdawn.slick.GameContainer.updateAndRender(GameContainer.java:703)
at org.newdawn.slick.AppGameContainer.gameLoop(AppGameContainer.java:456)
at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:361)
at particles.Main.main(Main.java:23)
您尚未初始化m
(仍然)為null
,因此在執行時
m.showhud();
您將獲得NPE,因為m
為null
。
您必須將Methods
的實例分配給變量m
您永遠不會為g
指定引用。 換句話說,在代碼的任何地方都沒有g = ...
這樣,在實例化Methods
類時,將g
初始化為默認值null
。
您尚未初始化Methods m
對象
通過您的代碼,我相信int()
方法應該已經初始化了m object
您可能需要實例化兩個類成員引用g和m 。 當前,兩個參考文獻都沒有指向任何對象。 它們必須分別指向Graphics和Methods對象。
如果可能,請向Methods類添加一個構造函數,該構造函數將負責初始化g 。
如果init()是Game(您的類)生命周期的開始,則在此狀態/塊中初始化m 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.