interface 接口 {
public void 接口方法();
}
class 实现类 implements 接口{
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void 接口方法() {
// TODO Auto-generated method stub
System.out.println("实现类实现接口的方法");
}
public void 实现类自己的方法(接口 inter) {
System.out.println("实现类自己的方法");
inter.接口方法();
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
实现类 tt = new 实现类();
tt.实现类自己的方法(new 接口() {
@Override
public void 接口方法() {
// TODO Auto-generated method stub
System.out.println("匿名内部类!!!");
}
});
tt.实现类自己的方法(()->{
System.out.println("lamdba写法");
});
tt.实现类自己的方法(new T());
}
}
class T implements 接口{
@Override
public void 接口方法() {
// TODO Auto-generated method stub
System.out.println("嗯");
}
}
- 接口方法的触发是显式的:必须通过代码
inter.接口方法()
主动调用。 - Lambda/匿名内部类只是实现:它们定义了接口方法的具体逻辑,但需要被调用才会执行。
当按钮被点击时,Java Swing 的事件分发线程(EDT)会自动检测到这个事件,并且调用
ActionListener
中的actionPerformed
方法,这样actionPerformed
方法里的代码就会执行。假设 Java Swing 没有事件处理机制
要是 Java Swing 没有这个事件处理机制,那么即使你给按钮添加了
ActionListener
,当按钮被点击时,actionPerformed
方法也不会自动执行,就像你之前代码里接口方法
不会自动执行一样,你得手动去调用相应的方法才能触发对应的逻辑。综上所述,Java Swing 的事件处理机制是其能自动处理用户交互事件的关键,没有这个机制,就需要手动控制事件的响应,和你之前普通 Java 代码的处理方式一致。