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