初学J2ME的一点经验

与其说是学J2ME的经验,倒不如说是类C++语言的一点注意事项,之所以这么说,是因为这个问题是在学J2ME时候发现的,整整折腾了我一天,虽然只是一点小的失误,但是直接后果是程序不断异常,所以我把它写出来,一方面提醒自己,学知识不能浅尝辄止,而应该多问为什么,不仅知其然还要知所以然,另一方面也告诉更多像我这样初学的朋友不要犯相同的错误。

下面请看一段代码:

/*
* ImageItemDemo.java
*
* Created on 2005年7月24日, 下午1:45
*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
/**
*
* @author mark
* @version
*/
public class ImageItemDemo extends MIDlet implements CommandListener{
private Command exitCommand=new Command("Exit",Command.EXIT,1);
private Form mainform;;
private ImageItem img1,img2;
public void ImageItemDemo(){
mainform=new Form("ImageItem Test");
mainform.append("显示各种ImageItem");
mainform.addCommand(exitCommand);
mainform.setCommandListener(this);
}
public void startApp() {
try{
img1=new ImageItem("默认图像控件",
Image.createImage("/Image.png"),
Item.LAYOUT_DEFAULT,
"第一张图片");
img2=new ImageItem("默认图像控件",
Image.createImage("/Image.png"),
Item.LAYOUT_2|Item.LAYOUT_EXPAND|Item.LAYOUT_NEWLINE_BEFORE,
"第二张图片");
}catch(Exception err){
System.out.println("can not load....");
}
mainform.append(img1);
mainform.append(img2);
Display.getDisplay(this).setCurrent(mainform);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c,Displayable d){
if(c==exitCommand){
destroyApp(false);
notifyDestroyed();
}
}
}

这是一个ImageItemt的演示程序,我在实现的前提下加了一点东西导致它异常,异常如下:

startApp threw an Exception
java.lang.NullPointerException
java.lang.NullPointerException
at ImageItemDemo.startApp(+64)
at javax.microedition.midlet.MIDletProxy.startApp(+7)
at com.sun.midp.midlet.Scheduler.schedule(+270)
at com.sun.midp.main.Main.runLocalClass(+28)
at com.sun.midp.main.Main.main(+116)

能找到异常原因吗?

首先确定是由startApp抛出空指针异常,其中用到的对象主要有两个,mainform和img1、img2,然而image载入抛出的应该可由catch(Exception err)捕获到,所以基本可以确定是mainform产生的异常,可是问题来了,mainform我已经在构造函数里面实例化了,而且也是类的成员变量,应该随对象存在,可是为什么会异常呢?

百思不得其解。。。。

于是把ImageItemDemo()里的代码移到startApp()里面,发现居然实现了,可以确定,就是没有实例化mainform。原因何在?难道是J2ME要先执行startApp才执行构造函数??答案是否定的。startApp()只是程序运行的切入点,对象和类的构造依然还是由构造函数完成。一个提示,那真的是构造函数吗?

一个很明显但是很容易被忽略的错误, public void ImageItemDemo(),它不是构造函数,甚至连构造函数的重载都不是,理由?限制了void类型。c++学了快1年了,确实没有想过也没有注意过这个问题,直接后果就是这样,类在构造时候不会执行它,那么其中的mainform自然不会被实例化,而依然只是一个引用,何以谈的上操作?

改的方法很容易,把void去掉就可以了,就这么一个简单的问题,耗了我一天,最大的感觉就是自己学的不够深,对理论观点依旧不够明确,所以写下它引以为戒。

时间: 2024-10-28 12:46:01

初学J2ME的一点经验的相关文章

在redhat Linux9下安装Oracle9.2.0的一点经验

oracle 这个也是我曾经写在大富翁论坛上的笔记,今天也一并转贴一下:http://www.delphibbs.com/keylife/iblog_show.asp?xid=6526 如下:--- 在redhat Linux9下安装Oracle9.2.0的一点经验 作者:jrq 摘要:简述在redhat Linux9环境下安装Oracle9.2.0数据库的过程. 关键字:Oracle9i  redhat Linux9  内核参数  环境变量       一直是在redhat Linux7.1环

做完一个小网站的一点经验总结(1): asp.net 与access数据库结合

access|asp.net|数据|数据库 第一次跟别人做东西,自己的一点经验,写下来,虽然比较菜,但还是要做点记录,如有错误缺漏,请各位不吝赐教,谢谢: )以前都是用asp.net 与sqlServer2000 结合做东西的,这次是用access,虽然是第一次用,但感觉与sqlServer2000的用法区别不大,以下对二者的用法做比较:SqlServer2000:    1>命名空间  using System.Data;                          using Syst

总结自己接触和学习设计的一点经验

随着公司影响力的壮大和产品的不断提升,相关的形象设计要逐步跟得上,需要逐渐提升,所以就招一个应届生美工,算是一块成长.应届生有拼劲.肯学,但也好高骛远,起点都差不多,如何培养美工就变得至关重要了.总结自己接触和学习设计的一点经验与大家分享,希望得到大家更多的建议. 一.配色 其实对色彩的感觉是设计师应具备的最基本素质,其作品不管是对网页界面.系统界面.还是产品包装等等都有广泛应用.基本的一些理论,什么冷暖色.对比色/补色.色彩心理.搭配原则等等,满大街都是,有意者随便搜一两篇看看就行.色彩对于美

编写图片空间QTP脚本时的一点经验

我录制QTP脚本的思路是让能跑起来的都跑起来,不能跑起来的暂时不管,同时先采取固化脚本的思路写脚本(详细),完成后再加入参数化,让脚本灵活起来!呵呵! 以下是我编写图片空间时的一点经验! 经验1:用FireEvent方法处理TOP菜单中弹出的子菜单 Browser("淘宝网-店铺管理平台").Page("淘宝网-店铺管理平台").Link("素材管理(1)").Click Browser("淘宝网-店铺管理平台").Page(

关于大型页游后端管理系统的一点经验和个人见解_相关技巧

前言: 做过游戏开发的人都知道,端游可以用c++,页游可以用sl或者as3,鉴于这段时间一直在看网页游戏开发的知识,所以关于游戏开发,我有一点自己的见解.就拿as3的网页游戏,一般游戏开发前端可以用as3做前端,后端用erlang,不了解这两种东西的朋友可以百度或者google一下.然后游戏数据管理和交互怎么呢!请看我下面分析! 本文主要内容: 前言 游戏数据交互 后端数据管理总结 一个简单的demo 游戏数据交互 一般一个大型的网页游戏有一个或者多个数据库以上,这些数据库内部有大量的数据表,表

地方特色网络棋牌游戏推广的一点经验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 离开网络游戏行业已经三年多了,回想那段岁月还是非常难忘的,那时带着几个业务员跑遍了广西.湖北和河南三省十七个市,见识了不少,锻炼了不少,也收获了不少,尽管由于种种原因那个游戏项目我们没能坚持下去,但那时的激情和快乐时常令我回味至今.先讲讲这个游戏项目的背景吧,我们当时做的是地方特色网络棋牌游戏,具体名字在这里就不讲了,目前市场上做的好的有黄金

做论坛积累的一点经验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 论坛不同于普通的门户网站博客网站等,它的SEO受到很多限制,很多常用的SEO技巧用在论坛上行不通的,下面介绍一下我做论坛的一点经验,希望大家多多交流. 一.论坛使用的心得 首先,建论坛常用的几个程序我就不用一一介绍了,只推荐两个最常用的Discuz和PHPwind,我用的后者,感觉后者稍微容易入手,论坛基本框架都已经设定好了,所以关键词密度在

我做软件推广的一点经验

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我做软件推广的一点经验,半个月软件下载量上百万条 最近在做8UFTP客户端工具的推广,顺便整理了一点软件推广的经验,供大家参考. 我是分为下面几步去操作的 首先我到软件下载站上去发布软件,比如天空.非凡.华军软件园.多特软件园.IT168下载软件.硅谷动力下载站提交8UFTP软件.现在这些网站都需要注册,华军软件园还需要邀请码才能注册.注册之

PHP开发大型项目的一点经验

项目 一.变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候.变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆.变量的命名尽量规范化,不要与PHP中的关键字相冲突. 二.函数 PHP自带了很多函数,这给我们程序的编写带来了很多的方便.当然,在大型程序中我们往往自己要定义许多个函数,几十甚至上百个.当然在使用了类的程序中就不叫函数了,就应该叫方法,这里暂且不谈类的使用方法.函数多了,难免就会搞混了.有什么方法