日期:2014-05-20  浏览次数:20605 次

j2me框架的一个问题
请大家看这个代码;

public class midlet01 extends MIDlet {
private static maincanvas m_maincanvas; //定义maincanvas的引用


public midlet01() {
//super();

}

  protected void startApp() throws MIDletStateChangeException {
  //程序开始运行时,为m_maincanvas分配存储空间
try{
m_maincanvas=new maincanvas(); //分配存储空间
}catch(Exception ex){}
Display.getDisplay(this).setCurrent(m_maincanvas);

}
   
  protected void pauseApp() {
m_maincanvas.Stop();

}


protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
m_maincanvas.Stop();

}

//这个是另外一个类
public class maincanvas extends Canvas implements Runnable,CommandListener{

  请问下大家两个问题:1,为什么要分配存储空间呢??分配存储空间是要存储什么呢??
  2,为什么要定义maincanvas的引用呢??


------解决方案--------------------
声明了一个类对象,需要把他通过new方法初始化实例,要不然无法使用。
你这两种写法都没有错,只不过习惯上声明和初始化要分开,而且为了让程序在特定的方法中做特定的事情,当然把初始化的工作交给startApp更好。
任何对象都会有引用啊,要不你怎么去用他呢,如果没有引用了就智能等着GC回收了。