出错程序的源代码片段如下:
class RandomRodentGenerator
...{
private static Random rand = new Random();
public Rodent next()
...{
switch(rand.nextInt(3))
...{
default:
case 0:return new Mouse();
case 1:return new Gerbil();
case 2:return new Hamster();
}
}
}
public class AbstractRodents
...{
public static void execken(Rodent[] r)
...{
for(int i=0;i<r.length;i++)
...{
r[i].ken();
}
}
public static void main(String [] args)
...{
//这一句即为出错代码:
//错误描述:AbstractRodents.java:60: 非法的表达式开始
// private static RandomRodentGenerator gen=
private static RandomRodentGenerator gen=
new RandomRodentGenerator();
Rodent[] r = new Rodent[3];
for(int i=0;i<r.length;i++)
...{
r[i]=gen.next();
}
}
}但将gen作为类成员变量后就没有错误了,
导致这个错误的原因是什么呢?
本文探讨了一个Java编程中关于表达式的常见错误案例,并分析了错误原因。指出在初始化类成员变量时,若直接在声明处赋值而非通过构造函数,可能会导致语法错误。通过对比正确的实现方式,帮助读者理解如何避免此类问题。

1287

被折叠的 条评论
为什么被折叠?



