我提前预习时查api写出来的,有关jcombox这个组件
final JComboBox comboBox = new JComboBox();
comboBox.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println(comboBox.getSelectedItem());
}
});
平时遇见类似于comboBox.addActionListener()这种形式的代码,括号里面
往往基本类型,或者某个对象,但是像今天这个代码,为什么括号里面放了
new ActionListener(),看起来像是新建一个对象,更重要的是还涉及到了重写
请问下这种形式的代码有什么更加特别的名字吗,还有就是括号里面的那算是什么,
基本数据类型肯定不是,倒是像对象,但和常见的对象还不一样,请高手帮解释下
这是采用了匿名内部类的方式写的,可以减少代码的耦合度。如果不按照上述的写法。comboBox.addActionListener(XX);这个里面的XX是一个ActionListener实例,而ActionListener是一个接口不可能new出实例来。
此时需要创建一个类去实现ActionListener接口,然后可以通过new实现类对象,此时这个对象可以传到comboBox.addActionListener(XX)中。
上面的写法实际上就是简写了这个过程。
new ActionListener()是抽象类或者接口,采用匿名的话,需要重写方法. 应该是接口.你可以API查找ActionListener.如果是接口的话. 这个类就是ActionListener的实现类, 如果是抽象类(适配器)的话就是他的子类
同楼上,使用的是匿名对象,腹泻的是对象中的部分方法,记得老师说这样做的目的是避免重写过多的监听方法,仅仅选择相关的自己需要用的方法,可以简化代码。
这种写法,是给组件绑定一个监听事件,匿名实现
这是匿名内部类,用法和你以前一样,就是会让你的代码更简洁
ActionListener是一个接口,comboBox.addActionListener(XX);需要传一个ActionListener的实例,new 一个接口必须要实现里面的方法,你也可以写一个方法返回ActionListener,comboBox.addActionListener(方法名);,也行
这种写法 类似于这样
$(".xx").click(function(){
alert("hhh");
});