String sınıfına eklenen yenilikler:
isBlank(), lines(), strip(), stripLeading(), stripTrailing(), repeat()
gibi birçok method String class'ına dahil edilmiştir. Bu metodlar sayesinde stringleri daha kolay manipüle edip kod karmaşıklığını azaltabiliriz.
String quoteString = "Spring helps \n \n developers \n build large scalable apps.";
List<String> lines = quoteString.lines()
.filter(line -> !line.isBlank())
.map(String::strip)
.collect(Collectors.toList());
assertThat(lines).containsExactly("Spring helps", "developers", "build large scalable apps");
Burada stream api'nin getirmiş olduğu yardımcı metodlar bulunmasaydı çok uzun kodlar yazmak zorunda kalabilirdik.
Path filePath = Files.writeString(Files.createTempFile(tempDir, "demo", ".txt"), "Sample text");
String fileContent = Files.readString(filePath);
assertThat(fileContent).isEqualTo("Sample text");
burada local file'a text yazıp içindekini direkt .readString() okumaya çalıştığımızda aynı şey olduklarını sağlamış oluruz.
List sampleList = Arrays.asList("Yasin", "Eryigit");
String[] sampleArray = sampleList.toArray(String[]::new);
assertThat(sampleArray).containsExactly("Yasin", "Eryigit");
Elimizde bulunan bir String arrayList'ini direkt olarak String array'ine dönüştürebiliriz.
List<String> sampleList = Arrays.asList("Yasin", "\n \n", "Eryigit", " ");
List withoutBlanks = sampleList.stream()
.filter(Predicate.not(String::isBlank))
.collect(Collectors.toList());
assertThat(withoutBlanks).containsExactly("Yasin", "Eryigit");
Burada boşluklar bulunduran sampleList listesi üzerinde koşul koyarak boş karakterleri eleyebilir ve direkt olarak temiz bir liste oluşturabiliriz.
javac springdemo.java
java springdemo
bunları yazmak yerine artık kodları direkt olarak
java HelloWorld.java
ile çalıştırabiliriz.
Java 17, yeni arayüzü genişletmek için java.util.Randomve SplittableRandomgibi eski rastgele sınıfları da yeniden düzenlendi. SecureRandomRandomGenerator ortaya çıktı.
Apple, bilgisayar hattını X64'ten AArch64'e geçirmek için uzun vadeli bir plan duyurdu. Bu JEP, JDK'yı macOS platformlarında AArch64 üzerinde çalışacak şekilde taşır.
Kalıtım üzerinde hassas bir kontrol sağlar. Kotlinde de bulunur
sealed class <sealed class name>
permits <subclass1>, <subclass2>, <subclass3> {
}