对于某些只需要使用一次的类来说,使用匿名类十分方便,这种情况尤其常见于Swing编程中的监听器中。
但匿名类由于没有类名,使用使用参数进行初始化,这对匿名类的使用造成了很大限制,今日又碰到了这样的问题,思前想后得一妙招,即在匿名类中使用一个set方法来初始化参数,代码如下:
slider.addChangeListener(new ChangeListener(){
JTextField textField;
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
JSlider slider=(JSlider) e.getSource();
this.textField.setText(String.valueOf(slider.getValue()));
}
public ChangeListener setTextField(JTextField textField){
this.textField=textField;
return this;
}
}.setTextField(textField));
上述代码通过方法setTextFiled初始化一个JTextField对象,并且返回了监听器本身,解决了向匿名类传递参数的问题