本文列举了从Java8到11各个变化的API: 变量从Java 10开始,开发人员可以选择让编译器使用var来推断类型: var x=1.0/2.0 var list = new ArrayList(); var stream = list.stream(); // Type inference can be (Java 8) Function helloFunction = s -> "Hello " + s; // Inference of generics (Diamond Operator, since Java 7) List strings = new ArrayList<>(); strings.add(helloFunction.apply("World")); // Inference of generics (Diamond Operator) with anonymous inner classes (Java 9 -> JEP 213) Consumer printer = new Consumer<>() { @Override public void accept(String string) { System.out.println(string); } }; strings.forEach(printer::accept); Java11已经提高了lambda中的var能力: IntFunction doubleIt1 = (int x) -> x * 2; // OK Java 10 and 11 IntFunction doubleIt2 = (var x) -> x * 2; // OK Java 11 更复杂案例: / /Inference of parameters in Lambda expressions Consumer printer = (var s) -> System.out.println(s); // statt s -> System.out.println(s); // But no mixture of "var" and declarated types possible // BiConsumer printer = (var s1, String s2) -> System.out.println(s1 + " " + s2); // Useful for type annotations BiConsumer printer = (@Nonnull var s1, @Nullable var s2) -> System.out.println(s1 + (s2 == null ? "" : " " + s2)); // given Optional value = Optional.of("properValue"); AtomicInteger successCounter = new AtomicInteger(0); AtomicInteger onEmptyOptionalCounter = new AtomicInteger(0); // when value.ifPresentOrElse( v -> successCounter.incrementAndGet(), onEmptyOptionalCounter::incrementAndGet); String新方法java 8加入新方法join: Set set1 = Set.of("a","b", "c"); List list1 = List.of("a","b", "c"); System.out.println( String.join("a", "b", "c") ); System.out.println( String.join(".", set1) ); System.out.println( String.join(".", list1) ); Java9 有了一个返回Stream的新方法 Java11 添加了更多String的新方法: String.repeat(int) String.lines() String.strip() String.stripLeading() String.stripTrailing() String.isBlank() 接口java8:
java的变化_从 java 8到 java 11变化一览
最新推荐文章于 2022-06-28 15:04:58 发布