Java 7以来增加得强大的新功能的示例
在Java 8中,成果编程和lambda被添加为说话成果。函数式编程的两个焦点典型是稳固的值和将函数晋升为一等国民的要领。数据颠末一系列修改步调,个中每个步调都必要一些输入并将其映射到新的输出。函数式编程可与Java中的Streams和null安详monad(可选)一路行使,如下所示… List<String> stringList = Arrays.asList("Hello", "World", "How", "Are", "You", "Today");
//functional style stringList.stream() .filter(s -> s.equals("Hello") || s.equals("Are")) .map(s -> s + " String") .forEach(System.out::println); 流(Java 8) 对付一样平常的计较机措施,凡是必需行使值列表,并对每个值执行给定的转换。在Java 8之前,您必需行使for轮回举办此转换,可是以后刻开始,您可以按以下方法行使Streams: Stream.of("hello", "great") .map(s -> s + " world") .forEach(System.out::println); > hello world > great world map函数将一个lambda作为输入,它将应用于流中的全部元素。 流可以在列表,荟萃和舆图上事变(通过转换)。多亏了Streams,您可以挣脱代码中险些全部的轮回! 可选项(Java 8) Java中的另一个常见题目是空指针非常。因此,Java引入了Optional —一个monad,它包装了一个也许为null或不为null的引用。可以通过成果性方法将更新应用于此Optional: Optional.of(new Random().nextInt(10)) .filter(i -> i % 2 == 0) .map(i -> "number is even: " + i) .ifPresent(System.out::println); > number is even: 6 在上面的代码段中,我们建设一个随机数,将其包装在Optional工具中,然后仅打印偶数。 JShell(Java 9) 最后,我们有一个Java的REPL,它的名字叫JShell!相反,您可以一次执行一个呼吁,然后当即看到功效。这是一个简朴的示例: $ <JDK>/bin/jshell jshell> System.out.println("hello world") hello world 恒久以来,认识JavaScript或Python之类的表明说话的人们都对REPL感想满足,但到今朝为止,Java中穷乏此成果。JShell应承界说变量,但也可以界说更伟大的实体,譬喻多行函数,类和执行轮回。另外,JShell支持自动完乐成能,假如您不知道给定Java类提供简直切要领,该成果会派上用场。 不行变荟萃的工场要领(Java 9) 很长时刻以来,Java中穷乏对列表举办简朴初始化的操纵,可是此刻已经已往了。早年,您必需执行以下操纵: jshell> List<Integer> list = Arrays.asList(1, 2, 3, 4) list ==> [1, 2, 3, 4] 此刻将其简化如下: jshell> List<Integer> list = List.of(1, 2, 3, 4) b ==> [1, 2, 3, 4] 列表,荟萃和映射存在这种(…)要领。它们都只用一行简朴的代码就建设了一个稳固的工具。 行使var举办范例揣度(Java 10) Java 10引入了新的var要害字,该要害字应承省略变量的范例。 jshell> var x = new HashSet<String>() x ==> []
jshell> x.add("apple") $1 ==> true 在上面的代码段中,编译器可以将x的范例揣度为HashSet。 此成果有助于镌汰样板代码并进步可读性。不外,它有一些限定:您只能在要领主体内部行使var,而且编译器会在编译时揣度范例,因此全部内容仍为静态范例。 单一源文件启动(Java 11) 早年,编写一个包括一个文件的简朴Java措施时,必需起首行使javac编译该文件,然后行使Java运行它。在Java 11中,您可以行使一个呼吁完成两个步调。 起首,界说单个源文件Main.java: public class Main { public static void main(String[] args) { System.out.println("hello world"); } } 此刻,您可以一步编译并运行它: $ java ./Main.java hello world 对付仅由一个Java类构成的简朴启动措施或尝试,此用于启动单个源文件的成果将使您的糊口更轻松。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |