出错程序的源代码片段如下:
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();
}
}
}
... {
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作为类成员变量后就没有错误了,
导致这个错误的原因是什么呢?