J2ME中主類的構造方法必須用public修飾

J2ME中主類的構造方法必須用public修飾

 

今天在寫程序時遇到一個小問題:一個j2me的小程序編譯時沒錯,運行時提示java.lang.IllegalAccessException,我的程序代碼如下:

import javax.microedition.lcdui. * ;
import
javax.microedition.midlet.MIDlet;
public class Test extends MIDlet implements
CommandListener
{
   
private
Display display;
   
private
Form mainForm;   
   
private
Command okCommand;
   
public
Test()
    {
        mainForm
= new Form( " Test "
);
             okCommand
= new Command( " Yes " ,Command.OK, 0
);
             mainForm.addCommand(okCommand);
        mainForm.setCommandListener(
this
);
    }
   
protected void
startApp()
    {
        display
= Display.getDisplay( this
);
        display.setCurrent(mainForm);
    }
   
protected void destroyApp( boolean
unconditional)
    {}
   
protected void
pauseApp() {}
   
public void
commandAction(Command c, Displayable d)
    {
        System.out.println(
" hello "
);
    }
}  

我在百度裏搜索之後,知道是主類Test的構造方法Test()前應該加上public,我加上之後果然就對了,可是爲什麼要加public呢?我記得以前寫J2SE的程序時有時也沒加public呀,比如這個例子:

public class A
{
    A(){}
   
public static void
main(String[] args){
        System.out.println(
" hello world "
);
    }
}

這個例子可以正常運行,後來在csdn網友的提示下才明白:原來J2ME中的startApp()方法和J2SE中的main()方法類似,都是程序的入口,但是在J2SE中,main()方法是“public static”的,也就是說是公共靜態方法,這樣就可以通過類名直接訪問,而無需實例化;但是在J2ME中,startApp()卻並不是static方法,需要先得到一個主類的實例,才能訪問startApp(),這時候就需要調用構造方法,如果構造方法不是public的,就無法訪問到,因此報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章