黑马程序员技术交流社区

标题: 关于 局部内部类引用同名局部变量的问题 [打印本页]

作者: First    时间: 2013-6-18 09:23
标题: 关于 局部内部类引用同名局部变量的问题
  1. butSrcs.addActionListener(new ActionListener() {

  2. @Override
  3. public void actionPerformed(ActionEvent e) {
  4. // TODO Auto-generated method stub
  5. fod = new FileDialog(myFrame, "open", FileDialog.LOAD);
  6. fod.setVisible(true);
  7. String dir = fod.getDirectory();
  8. String fileName = fod.getFile();
  9. if(dir==null||fileName==null)
  10. return;
  11. JTextField tf = new JTextField(30);//@1
  12. tf.setText(dir+fileName);
  13. tf.setEditable(false);
  14. srcs.add(tf.getText());

  15. JButton rm = new JButton("删除");//@2
  16. rm.addActionListener(new ActionListener() {

  17. @Override
  18. public void actionPerformed(ActionEvent e) {
  19. // TODO Auto-generated method stub
  20. JTextField tf = tf;//这里的tf 如何才能引用 @1 的 tf???
  21. JButton rm = rm;//这里的rm 如何引用 @2

  22. myFrame.remove(tf);
  23. myFrame.remove(rm);
  24. srcs.remove(tf.getText());
  25. }
  26. });
  27. myFrame.add(tf);
  28. myFrame.add(rm);
  29. myFrame.validate();
  30. myFrame.repaint();
  31. }
  32. });
复制代码

作者: 007诸葛亮    时间: 2013-6-18 09:47
方法中的内部类不能访问该方法的局部变量是因为:方法中声明内部类,目的只是由外部类来控制内部类的可见性,将一个类放到一个方法当中去定义的时候,那么就限定了这个类的使用范围只能在方法的内部,我们只是代码这样写而已,不要理解成为在这个方法内部有一个类,这个类是方法的一部分,一调这方法类执行什么什么的.. 不是的,我们只是代码这样写,目的是为了控制内部类的可见性,编译之后的结果,也会出现 外部类 和 内部类各自的字节码class文件,这就说明内部类是一个独立的个体,他们就是两个类而已,他们各自都有自己的成员变量和方法。那么这个在方法中声明的内部类里面当然不能访问该方法的局部变量了,他们就是各自单独的两个类,你在一个类里面可以通过该类引用访问他的成员变量或者方法,但是方法中内部声明的局部变量的作用域只是这个方法内部,你无法访问这个局部变量,根本访问不了。

作者: First    时间: 2013-6-18 14:13
007诸葛亮 发表于 2013-6-18 09:47
方法中的内部类不能访问该方法的局部变量是因为:方法中声明内部类,目的只是由外部类来控制内部类的可见性 ...

非常感谢你的回答

但是,拜托,我问的是 如何引用同名的局部变量,不是能不能访问
还有就是,访问是可以的,只是我忘了加final了,想重新编译的,却发现没有编译了--



作者: 滔哥    时间: 2013-6-18 14:17
提问的时候详细描述下
作者: 滔哥    时间: 2013-6-18 14:17
提问的时候详细描述下
作者: 滔哥    时间: 2013-6-18 14:17
提问的时候详细描述下
作者: First    时间: 2013-6-18 17:26
滔哥 发表于 2013-6-18 14:17
提问的时候详细描述下

现在提问是不是没法编辑了??

问题的具体描述在代码里面了
作者: 孙百鑫    时间: 2013-6-22 02:06
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2