Tag Java

Lambda 表达式在 Android 中的应用

前言 Android 支持完整的 Java7 特性,而升级到 Android Nougat(API Level 24) 之后,支持了 Java8 语言的一部分功能: 默认和静态接口方法 Lambda 表达式(在 API 级别 23 及更低版本中也可用) 重复注解 方法引用(在 API 级别 23 及更低版本中也可用) 类型注解(在 API 级别 23 及更低版本中也可用) 准备工作 使用这一部分支持的功能需要一个名为Jack的新编译器。 (Jack 工具链已经被废弃, 请看这里: ) 而 Jack 要求…

Java 中的单例模式

什么是单例模式? 单例模式是一种对象创建模式,用于产生对象的一个具体实例,并且可以确保系统中一个类只能产生唯一的一个实例。 这样的方式能够带来两大好处: 对于频繁使用的对象,可以省略创建对象所花费的时间,对于复制的对象,这样的创建方式的开销是十分值得的; new 的次数少了,对内存的使用频率也就下降了,当然也就减轻了 GC 的压力。 设计思想 这种模式要解决的问题就是要保证应用中只存在一个对象。那怎样实现呢? 不允许其他程序new对象 在该类中创建对象 对外需要暴露一个方法,让其他获取这个对象 体现到代码中,解决办法为: 私有化构造函数 在本类中创建一个本类对象 定义一个方法,能够让其他的类获取这个对象 Code 1. 最简单的写法为 这种方式称为饿汉式。 优点 简单明了 在类加载时即完成了实例化,避免了线程同步的问题 缺点 没有使用懒加载 可能造成内存浪费 2. 变种方式 相比于第一种写法,本类中将实例化对象的代码放到了 static 代码块中。两种方法的效果其实是一样的。所以优缺点也是一样的。 3. 懒汉式(线程不安全) 优点 使用了懒加载 缺点 当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。也就是说在多线程下不能正常工作。…