Java目前来讲不支持委托,就是方法的回调.而要达到这种功能,需要用到对象回调.虽然Java提供了匿名对象可以在一定程度上简化事件处理对象的编写,但由于一些接口方法很多,如果用命名对象或者匿名对象来处理事件的话,就需要实现这个事件接口的所有方法,而大多时候其实只需要实现其中某个或某几个方法就可以,采用直接实现接口的方式就会增加工作量,接口一多还会使得事件接口处理编程看起来很混乱,很复杂,因此用事件适配器,给接口一个默认实现,用户的事件再从这个适配类继承,在继承类中只要实现需要的方法即可,而不需要实现所有的方法,这可以简化事件处理代码.另外一个好处就是可以起到"适配模式"的好处.通过这个适配可以将事件接口和事件具体的处理者分离,原因是事件的接口一般处在更抽象的层次上,一般是比较固定的,而事件的处理者一般处在具体层上,具体的处理者的调用接口并不一定符合事件触发者调用所需要的事件接口描述,因此通过一个适配器类来中转这种调用,可以提供更好的灵活性和可扩展性,也可以提高代码的复用。比如按钮的点击处理,按钮点击后的处理代码有自己的调用接口,但按钮的点击事件的触发可以是鼠标点击,也可以是处于焦点下的回车事件来触发。
采用适配器方法,好处很多,但也有一个不伤大雅的缺点是容易产生不易察觉的错误,产生这个错误的根本原因是Java的继承中的虚方法和覆盖方法都没有关键字,而java是大小写敏感的,这样就很容易写错覆盖的方法.
Java的内部类是一个很有意思的东西,它不属于外部类,而是属于外部类的实例,这跟C#的内部类不一样。C#的内部类与外部类的不同仅仅在于访问权限。内部类可以直接访问外部类的成员,通过外部类名SomeClass.this就可以访问外部类当前实例.静态内部类不属于外部类的实例。因此不能调用外部类的实例方法。普通内部类的机制,在实现线程安全方面会提供很多便利.很容易形成一个实例协作对象集合.因此Java事件的处理类一般采用内部类会比较好.
在Java中,除了私有和final类型的方法都是虚方法,可以在子类中覆盖.虽然这种方式可以少用两个关键字,但做为强类型的语言,这对程序员来说是不利的,很容易导致不必要的错误,程序员自己很难区分是覆盖和重载的,而且由于大小写是敏感的,这也会导致覆盖父类方法的困难.很多时候,公共方法也不代表就是虚方法,明确一个方法是否是虚方法,可以交给程序员自己完成,这样也可以增加代码的安全性.虚模式在很多时候可以用来替代部分面向方面编程的功能,是一种常用的设计模式,但在Java中很难实现这种模式(虚模式在我前面的博文中有介绍).
在事件的处理机制上,我还是希望Java在以后的版本中能支持委托类型,这样不仅可以简化事件代码的书写,也有利于多个类之间的事件交互.减少不必要的接口实现.
分享到:
相关推荐
### Java学习笔记——内部类详解 #### 一、引言 Java中的内部类是一个非常有用但又容易让人感到困惑的概念。内部类本质上是在另一个类的内部定义的类,它可以访问外部类的所有成员变量和方法,甚至是私有成员。...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...
这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...
【Java学习笔记达内内部使用,保证你没有看过】 这篇笔记是针对Java初学者和有一定经验的开发者设计的,由达内教育内部使用的资源,涵盖了从基础到进阶的全面内容,确保提供了一些鲜为人知的见解和深入理解。笔记...
### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...
这些学习笔记将带你深入了解Java的核心概念,特别是面向对象编程和集合框架。以下是对每个文件内容的详细阐述: 1. **Day0804_HashMap的基本使用.docx**:HashMap是Java集合框架中的一个重要组件,它提供了键值对的...
JAVA学习笔记.pdf 中讲解了JAVA语言的基础知识,包括类的基本知识、成员变量、成员方法、类的实例、内部类、匿名类、接口、包等。 类的基本知识 在JAVA中,类是对象的蓝图,类的声明语法为:[访问控制符] class ...
### Java学习笔记知识点总结 #### 第一章:Java语言入门 - **1.1 Java的诞生** Java由Sun Microsystems公司于1995年推出的一种可移植、面向对象的编程语言。最初的设计目标是为消费电子产品提供一种通用编程语言...
### Java学习笔记经典知识点解析 #### 一、面向对象编程基础 **面向对象**是一种重要的编程范式,它改变了传统的面向过程的编程思路,强调通过对象来组织代码,提高代码的复用性和维护性。 **面向对象的核心概念*...
7.11.1. 内部类的分类 7-29 7.11.2. 成员内部类 7-29 7.11.3. 局部内部类 7-30 7.11.4. 静态内部类 7-30 7.11.5. 匿名内部类 7-31 7.12. 集合 7-31 7.12.1. 集合接口类层次 7-32 7.12.2. 集合类层次 7-33 7.12.3. 五...
Java学习笔记是深入理解并掌握Java编程语言的重要资源,尤其对于初学者和准备Java面试的开发者来说,这些内部资料提供了丰富的知识和实践经验。本篇将根据"corejava"这一核心标签,结合压缩包中的文件"java学习笔记...
1. **定义类**:在Java中,类的定义遵循特定的语法规范,如`class Student{...}`,其中类名通常首字母大写。 2. **实例变量与局部变量**:实例变量是在类中定义但在方法之外声明的变量,它们属于对象本身;局部变量...
JAVA学习笔记是一个全面涵盖JAVA编程基础到进阶的资源集合,特别适合初学者掌握JAVA语言和项目开发技术。笔记内容包括了几个核心领域,如编程思想、多线程设计模式、网络编程,以及JAVA的新输入/输出(NIO)系统。 ...
内部类(包括成员内部类、局部内部类、匿名内部类)是Java特有的特性,允许在类内部定义其他类。 【Java高级】 Java高级部分涵盖了更复杂的特性和技术,包括: 1. **反射**:Java反射机制允许在运行时检查类的信息...
总的来说,Java的学习不仅仅是语法的学习,更重要的是理解面向对象编程的思想,掌握如何通过类和对象来组织和管理代码,以及如何利用封装、继承和多态来构建可扩展和可维护的系统。通过不断的实践和理解,可以逐步...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...