zoukankan      html  css  js  c++  java
  • Java 基础 内部类

    Java 基础 内部类

    内部类(嵌套类) nested class 目的为外围类enclosing class提供服务。

    四种:

    • 静态成员类 static member class
    • 非静态成员类 nonstatic member class
    • 匿名类 anonymous class
    • 局部类 local class

    以下来自effective java 22

    非静态成员类的每个实例 都隐含着与外围类的 一个外围实例enclosing instance 相关联。

    在非静态成员类的实例方法内部,可以调用外围实例上的方法或者 利用this获得 外围实例的引用。

    如果嵌套类的实例 可以在 外围类的实例之外 独立存在,这个嵌套类就必须是静态成员类。

    非静态成员类的一个常见用法 Adapter

    Map 接口实现 使用 非静态成员类来实现集合视图 collection view。Map keySet entrySet Values方法返回的。
    List Set 通过非静态成员类来实现 迭代器 iterator

    如果成员类 不要求访问外围实例,就始终static 修饰,成为静态成员类。 如果省略static修饰符, 则每个实例都将包含一个额外的指向外围对象的引用。

    私有静态成员类, 用来代表外围类的一个内部组件。 例子就是Map对象的 key 和 value 需要关联起来,内部有一个 Entry对象,对应Map的每个键值对。

    匿名内部类 不能拥有静态成员, 不能实例化,不能继承,实现接口等。

    匿名类的常见用法是

    1. 动态创建函数对象。 function object。
    2. 创建过程对象 process object
    3. 静态工厂方法

    Java静态类
    java提高篇(八)----详解内部类
    《Effective Java》22条 优先考虑静态成员类

  • 相关阅读:
    Linux I2C核心、总线和设备驱动
    移植 Linux 内核
    同步、互斥、阻塞
    异步通知
    poll机制
    Linux异常处理体系结构
    字符设备的驱动
    进程间的通信—套接字(socket)
    进程间的通信—信号量
    Spring事件的应用
  • 原文地址:https://www.cnblogs.com/ironbrady/p/6607102.html
Copyright © 2011-2022 走看看