DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

Java You Don't Know

原文链接

java8 stack

Java 是一门 强类型、静态检查、显式类型 的“低糖”语言,它支持面向对象编程、面向对象多态、并发编程、事件驱动、反射元编程、泛型编程、Annotation 处理,当然,也包含基本的函数式编程递归支持

Kotlin 是一个从来不缺特性的语言 — 协程、类型推导、完全面向对象(class, object, companion object)、扩展函数、typealias、面向对象 mix-in混入、first-class 面向对象代理、属性(property)、密封类(sealed class)、数据类(data class)和数据类解构赋值、注解类(annotation class)、internal 访问限制、lateinit var 实例字段属性、闭包(lambda)、高阶函数、尾递归tailrec、灵活控制流(labled chunk)、if 表达式、when 分支判断、内联(inline)方法和类、vararg、操作符重载、和 Object#equals 等价的 (==) 二元逻辑运算符、infix notation (e.g. to, until)、elvis (?:) 和 null 传导 (?.)、区间和 Pair、多行字符串、强制标识符合法化(val #_# = 0x0_0)、软化关键字(soft keywords)、in out 和声明处型变、reified 内联实现真泛型

  • Java 的泛型

    • Java 的类型、子类型和型变
    • Java 类型相关名词解释
      • Subtyping, Type Compatibility, First-class-citizen, Polymorphism
      • Raw Type, Generic Type, Generic Method (Parameterized Types)
      • Type Constructor, Type Parameter (PLT)
      • Type Ereasure (in Java)
      • Type Wildcard (capture<…> in Java)
    • Java 的泛型通配符Type wildcard、生产者<? extends T>和消费者<? super T>模式使用
    • 子类型、泛型类型型变、类型参数的子类型约束、类型安全
    • Java 编译器javac怎么知道infer我指定的子类型subtyping限定constraint安不安全well behaved?
    • Kotlin 的泛型型变标记:生产者out和消费者in、声明处型变
    • Kotlin 的类型投影、* 类型参数
    • Java 的泛型参数推导

    invokedynamic 和 Lambda、Runtime Desugar 有啥关系

    (Android)

    • Java 8 的 -> lambda:匿名anonymouse子类subclass的语法糖、Kotlin 的 SAM interface 自动实现
    • Effective final 局部变量问题、Ruby、Python、C# 里的等价物
    • Java 是怎么实现 Lambda 的、为什么要这么做、为什么需要 invokedynamic 支持