方法中使用new,变量范围探索

来源:互联网 发布:淘宝如何设置两个客服 编辑:程序博客网 时间:2024/05/23 23:24

代码如下

public void action(){//tetromino = Tetromino.randomTetromino();//nextOne = Tetromino.randomTetromino();//wall[19][2] = new Cell(19,2,Tetris.T);startAction();repaint();KeyAdapter l = new KeyAdapter() {public void keyPressed(KeyEvent e) {int key = e.getKeyCode();if(key == KeyEvent.VK_Q){System.exit(0);//退出当前的Java进程}if(gameOver){if(key==KeyEvent.VK_S){startAction();}return;}//如果暂停并且按键是[C]就继续动作if(pause){//pause = falseif(key==KeyEvent.VK_P){continueAction();}return;}//否则处理其它按键switch(key){case KeyEvent.VK_RIGHT: moveRightAction(); break;case KeyEvent.VK_LEFT: moveLeftAction(); break;case KeyEvent.VK_DOWN: softDropAction() ; break;case KeyEvent.VK_UP: rotateRightAction() ; break;case KeyEvent.VK_Z: rotateLeftAction() ; break;case KeyEvent.VK_SPACE: hardDropAction() ; break;case KeyEvent.VK_P: pauseAction() ; break;case KeyEvent.VK_5://AI入口if(IfAutoRun==false){timerAuto = new Timer();timerAuto.schedule(new TimerTask(){public void run(){Auto auto = new Auto();auto.myRobot();}},100,100);IfAutoRun = true;}else{timerAuto.cancel();IfAutoRun = false;}}repaint();}};this.requestFocus();this.addKeyListener(l);}

如果在action()函数中声明Timer timerAuto;会提示The value of the local variable col is not used,

而且函数中是不支持声明函数的,所以系统默认,在函数中新创建的类中的方法是不在该函数范围内的,所以新方法是不在函数内声明的变量的覆盖范围内的。

所以只能在类体中声明。


0 0
原创粉丝点击