这的确太好了,所以 catch 在哪里? 令人悲哀的是,流大年夜 API 24 才可用。谷歌做了功德,但哪个应用法度榜样有效 minSdkVersion = 24?
荣幸的是,Android 平台有一个很好的供给很多很棒的库的开源社区。Lightweight-Stream-API 就是个中的一个,它包含了 Java 7 及以下版本的基于迭代器的流实现。
膳绫擎的例子结合了 Lombok、Retrolambda 和 Lightweight-Stream-API,它看起来几乎和 Kotlin 一样棒。应用静态工厂办法许可您将任何 Iterable 转换为流,并对其应用 lambda,就像 Java 8 流一样。 将静态调用 Stream.of(persons) 包装为 Iterable 类型的扩大函数是完美的,然则 Java 不支撑它。
扩大函数
扩大机制供给了向类添加功能而无需持续它的才能。 这个众所周知的概念异常合适 Android 世界,这就是 Kotlin 在该社区很受迎接的原因。
流也由 Google 经由过程 Jack 编译器供给。 不幸的是,Jack 不应用 Lombok,因为它在编译代码时跳过生成中心的 .class 文件,而 Lombok 却依附于这些文件。
有没有技巧或魔术将扩大功能添加到你的 Java 对象箱? 因 Lombok,你可以应用它们作为一个实验功能。 根据 Lombok 文档的解释,他们想把它大年夜实验状况移出,根本膳绫腔有什么变更的话很快。 让我们重构最后一个例子,并将 Stream.of(persons) 包装成扩大函数。
- import lombok.Data;
- import lombok.experimental.ExtensionMethod;
- @ExtensionMethod(Streams.class)
- public class Foo {
- void foo(List<Person> persons) {
- persons.toStream()
- .filter(it -> it.getAge() >= 21)
- .filter(it -> it.getName().startsWith("P"))
- .map(Person::getName)
- .sorted()
- .forEach(System.out::println);
- }
- }
- @Data class Person {
- final String name;
- final int age;
- }
- class Streams {
- static <T> Stream<T> toStream(List<T> list) {
推荐阅读
在公共云迁徙时代,IT团队须要采取谨慎的步调,以避免听到“体系宕机”这种恐怖的提示。跟着组织迁徙到基于云计算的基本举措措施,IT团队须要在迁徙过程中保持可用性。然则,推>>>详细阅读
地址:http://www.17bianji.com/lsqh/35085.html
1/2 1