Saturday, September 8, 2007

惨痛的教训:Java之切忌使用未初始化的类成员对象

今天又花了N多冤枉时间在傻问题上。

一个类里面定义了一个public static final Character A作为常量使用。

然后而后面给出了一个符号表,即public static final Character [] symbols = new Character []{A,......}

结果由于一下子没注意,把第一句放在了第二句的后面,结果初始化该类时,由于是按顺序执行类内的语句的,结果这时A默认是null的。

后面的使用了一个方法来遍历该表以检查参数是否在表中。

由于程序是递归的(递归下降预测分析器),因此调试起来头都晕了,找了几个小时才找到问题所在(一开头还以为自己的BNF设计得不好,于是化来化去,消除epsilon production,left recursion elimination,retract left common factor等烦死了)

天,什么时候才有吴毅大牛一半的功力?

No comments: