zoukankan      html  css  js  c++  java
  • 《Java核心技术 卷I》读书笔记五

    章节内容

    • 接口
    • 接口示例
    • lambda表达式
    • 内部类
    • 代理

    接口

    接口不是类,是对类的一组需求描述。
    接口的所有方法自动归属public,因此接口中方法不需要提供关键字public
    接口中可以定义常量,接口中的域将被自动设为public static final
    java8之前接口不能实现方法
    如同使用instanceof检查一个对象是否属于某个特定类一样,也可以使用instance检查一个对象是否实现了某个特定的接口
    虽然在接口中不能包含实例域或静态方法,但却可以包含常量
    每个类只能拥有一个超类,但却可以实现多个接口。
    在java8中,允许在接口中增加静态方法;允许为接口方法提供一个默认实现,必须用default修饰符标记

    默认方法的好处:

    1. 实现接口的程序员只需要关心他们真正关心的接口方法,不用全部实现
    2. 接口演化,为旧JDK的接口增加方法而不用修改所有继承这个接口的类

    lambda表达式

    箭头->是java中的一种lambda表达式形式
    对于只有一个抽象方法的接口,需要这种借口的对象时,就可以提供一个lambda表达式,这种接口被称为函数式接口。
    PS:java设计者没有为lambda增加函数类型,我们不能把lambda表达式赋给Object的变量,因为Object不是一个函数式接口

    将已有方法引用为lambda表达式可以使用::操作符,主要有三种情况:

    1. object::instanceMethod
    2. Class::staticMethod
    3. Class::instanceMethod
      第三种情况中,第一个参数会成为方法的调用者。例如,String::compareToIgnoreCase等同于(x,y)-> x.compareToIgnoreCase(y)
      构造器也是可以作为方法引用为lambda表达式

    lambda表达式的三个部分:

    1. 一个代码块
    2. 参数
    3. 自由变量的值,这是指非参数而且不在代码中定义的变量。也就是闭包
      闭包主要注意点:
    4. 只能引用值不会改变的变量
    5. 如果在lambda表达式中引用,而这个变量可能在外部改变,这是不合法的

    lambda表达式中的this代表创建这个lambda表达式的方法的this参数

    内部类

    内部类是定义在另一个类中的类,产生内部类的原因:

    1. 内部类方法可以访问该类定义所在的作用域中的额数据,包括私有
    2. 内部类可以对同一个包中的其他类隐藏起来
    3. 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷

    使用内部类访问对象状态

    内部类的对象总有一个隐式引用,指向了创建它的外部类对象
    只有内部类可以是私有类,常规类都是宝可见性或公有可见性

    内部类的特殊语法规则

    内部类中的所有静态域都必须是final

    局部内部类

    局部类不能用public或private访问说明符进行声明,它的作用域被限定在声明这个局部类的块中。

    匿名内部类

    如果构造参数的小括号后面跟一个大括号,正在定义的就是内部类

    静态内部类

    在内部类不需要访问外围类对象的时候应该使用静态内部类
    声明在接口的内部类自动成为static和public类

    代理

    创建代理对象需要使用Proxy类的newProxyInstance方法,需要三个参数:

    1. 一个类加载器
    2. 一个Class对象数组
    3. 一个调用处理器

    代理类的特性

    所有的代理类都扩展于Proxy类
    一个代理类只有一个实域--调用处理器
    代理类一定是public和final

  • 相关阅读:
    归一化与标准化的概念与区别
    深度学习中的优化器学习
    yolo3与yolo-tiny
    给tensorflow1.x estimator 添加timeline分析性能
    python 爬取百度图片
    TensorFlow 高性能数据输入管道设计指南
    TensorRT加速tensorflow模型(使用Tensorflow内置tensorRT,避免写自定义Plugin)
    21.Pod的limit和request和资源监控收集服务Heapster
    20.调度器,预选策略和优选策略
    8.docker的安全性
  • 原文地址:https://www.cnblogs.com/prelude1214/p/13737352.html
Copyright © 2011-2022 走看看