构造函数初始化出现空指针问题,,望大神指教
class Mypanel extends JPanel implements KeyListener{
//定义一个我的坦克
//Hero hero=new Hero(100, 100);有这一行就无空指针问题
Hero hero=null;如果仅仅有这一行没有上一行的话就会出现空指针,,下面的构造函数明明初始化了啊
//定义一个敌人坦克
Vector<EnemyTank> ets=new Vector<EnemyTank>();
int enSize=3;
public Mypanel()
{
//初始化我的坦克
Hero hero=new Hero(100, 100);]初始化
//初始化敌人坦克
for(int i=0;i<enSize;i++)
{ //创建一辆敌人的坦克对象
EnemyTank et=new EnemyTank((i+1)*50,0);
et.setColor(0);
//加入
ets.add(et);
}
}
--------------------编程问答-------------------- Hero hero=null;如果仅仅有这一行没有上一行的话就会出现空指针,,下面的构造函数明明初始化了啊
你的hero的初始化调用的不是它自己的构造方法,是在MyPanel内部的。属于局部变量,出了方法,就失效了。 --------------------编程问答-------------------- 此hello 非彼hello 是两个不同的对象
//初始化我的坦克改为//初始化我的坦克
Hero hero=new Hero(100, 100);]初始化
hero=new Hero(100, 100);]初始化试试 --------------------编程问答-------------------- 我想楼主忽略了一点,就是你定义的成员变量初始化为null了,而在构造方法中再次定义了一个Hero对象,虽然这个对象初始化了,可是这个对象鱼成员变量的Hero不是一个对象,这个Hero只在构造方法中有效,而实际上成员变量的Hero在后期调用的时候还是null --------------------编程问答-------------------- 在构造方法里 hero 变成局域变量了, 同名的话 局域变量是优先的
补充:Java , Java SE