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的,就无法访问到,因此报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值