`
javawebsoa
  • 浏览: 409391 次
社区版块
存档分类
最新评论

Java学习笔记(事件,内部类)

阅读更多

Java目前来讲不支持委托,就是方法的回调.而要达到这种功能,需要用到对象回调.虽然Java提供了匿名对象可以在一定程度上简化事件处理对象的编写,但由于一些接口方法很多,如果用命名对象或者匿名对象来处理事件的话,就需要实现这个事件接口的所有方法,而大多时候其实只需要实现其中某个或某几个方法就可以,采用直接实现接口的方式就会增加工作量,接口一多还会使得事件接口处理编程看起来很混乱,很复杂,因此用事件适配器,给接口一个默认实现,用户的事件再从这个适配类继承,在继承类中只要实现需要的方法即可,而不需要实现所有的方法,这可以简化事件处理代码.另外一个好处就是可以起到"适配模式"的好处.通过这个适配可以将事件接口和事件具体的处理者分离,原因是事件的接口一般处在更抽象的层次上,一般是比较固定的,而事件的处理者一般处在具体层上,具体的处理者的调用接口并不一定符合事件触发者调用所需要的事件接口描述,因此通过一个适配器类来中转这种调用,可以提供更好的灵活性和可扩展性,也可以提高代码的复用。比如按钮的点击处理,按钮点击后的处理代码有自己的调用接口,但按钮的点击事件的触发可以是鼠标点击,也可以是处于焦点下的回车事件来触发。

采用适配器方法,好处很多,但也有一个不伤大雅的缺点是容易产生不易察觉的错误,产生这个错误的根本原因是Java的继承中的虚方法和覆盖方法都没有关键字,而java是大小写敏感的,这样就很容易写错覆盖的方法.

Java的内部类是一个很有意思的东西,它不属于外部类,而是属于外部类的实例,这跟C#的内部类不一样。C#的内部类与外部类的不同仅仅在于访问权限。内部类可以直接访问外部类的成员,通过外部类名SomeClass.this就可以访问外部类当前实例.静态内部类不属于外部类的实例。因此不能调用外部类的实例方法。普通内部类的机制,在实现线程安全方面会提供很多便利.很容易形成一个实例协作对象集合.因此Java事件的处理类一般采用内部类会比较好.

在Java中,除了私有和final类型的方法都是虚方法,可以在子类中覆盖.虽然这种方式可以少用两个关键字,但做为强类型的语言,这对程序员来说是不利的,很容易导致不必要的错误,程序员自己很难区分是覆盖和重载的,而且由于大小写是敏感的,这也会导致覆盖父类方法的困难.很多时候,公共方法也不代表就是虚方法,明确一个方法是否是虚方法,可以交给程序员自己完成,这样也可以增加代码的安全性.虚模式在很多时候可以用来替代部分面向方面编程的功能,是一种常用的设计模式,但在Java中很难实现这种模式(虚模式在我前面的博文中有介绍).
在事件的处理机制上,我还是希望Java在以后的版本中能支持委托类型,这样不仅可以简化事件代码的书写,也有利于多个类之间的事件交互.减少不必要的接口实现.

分享到:
评论

相关推荐

    java学习笔记(内部类)汇集

    java中的内部类是比较难以理解的一个问题,此文档为java内部类学习的文档资料汇集

    java学习笔记(内部资料)

    java学习笔记 内部资料 对查阅,知识总结,参加java面试等 很有帮助

    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学习笔记-超强笔记

    实例变量的作用域至少在本类内部,受访问控制符的限制。 在重合作用域,实例变量和局部变量允许有命名冲突,“局部优先”。 定义方法: 格式: [ 修饰符 ] 返回类型 方法名( 参数列表 ) [ throws ...

    java学习笔记 达内笔记(经典)

    (二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结

    java笔记.zip

    尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    JAVA学习笔记达内内部使用,保证你没有看过

    达内内部使用,保证你没有看过,总结的很到位

    java基础(超详细。。学习笔记) 公司内部资料!保密哦!!!

    java基础(超详细。。学习笔记) Java源代码 面向对象编程学习

    java内部学习笔记.docx

    3.16内部类 26 3.17匿名类 27 3.18二维数组和对象数组 28 3.19其他注意事项 28 Java SE核心I 30 4.1 Object类 30 4.2 String类 31 4.3 StringUtils类 33 4.4 StringBuilder类 33 4.5正则表达式 34 4.6 Date类 35 4.7...

    Java基础内容-内部类学习笔记

    根据老师讲解写的笔记

    观看韩顺平学习整理java的笔记到异常

    帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 代码块 4 代码块使用注意事项和细节 5 单例模式 6 final...

    java学习笔记源码MD.rar

    内部包含了jvm,spring,java多线程等等描述

    Java学习笔记(必看经典).doc

    里面包含基础知识,如修饰符,常用的关键字等,内部类,面向对象思想,异常处理相关知识点,常用集合知识点等等。

    Java学习笔记(javase)

    内容为本人整理学习javase时的笔记,java基础知识后续上传,内部含有两个文件,内容相同,文件格式不同,方便大家参考使用

    JAVA学习笔记第八天——示例代码Day08

    JAVA学习笔记第八天——示例代码Day08,包含接口作为方法参数和返回值示例代码、多态示例代码、内部类示例代码

    Java基础笔记.md

    适合Java初学者的学习笔记,涵盖了从软件安装,环境配置,到编码学习的基本内容,十分的详细。讲解了java的基础知识,适合初学者和小白使用。包含jdk的安装(建议安装版本1.8),java语言概念、基本数据类型、条件...

    JAVA学习笔记(经典必看)

    达内的JAVA笔记,非常的全!详解内容非常丰富,适合初中级学习,内部还有大量配套练习哦!

    JAVA学习精细笔记

    最详细的JAVA笔记,简练,详细。从Java概述,java程序的运行过程到接口,内部类,集合框架,线程等等,各种知识很全面

    java学习笔记(排序,数组)

    内容为本人学习Java编程基础数组、排序部分整理笔记,内部含有两个文件,格式不同内容相同,方便大家参考使用

Global site tag (gtag.js) - Google Analytics