当前位置: 代码迷 >> Java相关 >> 呵呵,越学越糊涂了,关于内部类访问外部对象不是要声明为final但是下面的程 ...
  详细解决方案

呵呵,越学越糊涂了,关于内部类访问外部对象不是要声明为final但是下面的程 ...

热度:100   发布时间:2007-09-27 23:52:21.0
呵呵,越学越糊涂了,关于内部类访问外部对象不是要声明为final但是下面的程序却能
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class X{
StringBuffer x=StringBuffer("sdfsdklfjsadklfjsdklj");
public X(){
JFrame f=new JFrame();
JTextArea t=new JTextArea(10,20);
JButton b=new JButton("连接");
JScrollPane s=new JScrollPane(t);
t.setText("ljfklsdjfkl");
t.setLineWrap(true);
s.getVerticalScrollBar().setValue(s.getVerticalScrollBar().getMinimum());
System.out.println(s.getVerticalScrollBar().getMaximum());
b.requestFocus(true);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(x);
}
}
);
f.getContentPane().add(s);
f.getContentPane().add(b,BorderLayout.SOUTH);
f.setSize(100,200);
f.setVisible(true);
}
public static void main(String[] args){
new X();
}
}
搜索更多相关的解决方案: 部类  final  声明  对象  

----------------解决方案--------------------------------------------------------
因为你没有通过方法传递进来。只有方法传递的参数才要求是final的,并且如果传递的参数是在匿名类的父类的构造器里面用的话,也不需要是final的。
----------------解决方案--------------------------------------------------------
还有方法内声明的变量,如果内部类要使用,也是要加final的。
----------------解决方案--------------------------------------------------------
只有访问方法里面的局部变量需要声明为final,因为局部变量的生命周期会比内部类的要短
----------------解决方案--------------------------------------------------------
  相关解决方案