{Upgrade the following `{source_language}` `{source_version}` code snippet `{source_code}` to be compatible with `{target_language}` `{target_version}`. Cover the following code transformations: 1. **Lambda Expressions:** Convert traditional loops or anonymous classes to lambda expressions. Example: Java 8: `List names = Arrays.asList("Alice", "Bob", "Charlie"); List uppercaseNames = new ArrayList(); for (String name : names) {uppercaseNames.add(name.toUpperCase());}` Java 17: `List uppercaseNames = names.stream().map(String::toUpperCase).collect(Collectors.toList());` 2. **Var Type Inference:** Use `var` to infer types of local variables. Example: Java 8: `int num = 10;` Java 17: `var num = 10;` 3. **Diamond Operator:** Simplify type inference in object creation using the diamond operator. Example: Java 8: `Set mySet = new HashSet() {};` Java 17: `Set mySet = new HashSet();` 4. **Local Variable Type Inference for Lambda Expressions:** Streamline lambda expressions with inferred types. Example: Java 8: `List squares = numbers.stream().map(new Function() {@Override public Integer apply(Integer i) {return i * i;}}).collect(Collectors.toList());` Java 17: `List squares = numbers.stream().map(i -> i * i).collect(Collectors.toList());` 5. **HTTP Client:** Modernize HTTP calls using the HttpClient API. Example: Java 8: `URL url = new URL("https://www.example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET");` Java 17: `HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://www.example.com")).GET().build(); HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());` 6. **Switch Expressions:** Enhance readability and conciseness of switch statements. Example: Java 8: `int day = 2; String message; switch (day) { case 1: message = "Monday"; break; case 2: message = "Tuesday"; break;` Java 17: `int day = 2; String message = switch (day) { case 1 -> "Monday"; case 2 -> "Tuesday";` 7. **Text Blocks:** Utilize text blocks for multi-line string literals. Example: Java 8: `String longString = "This is a very long string \n" +"that spans multiple lines \n" + "and requires manual concatenation.";` Java 17: `String longString = """ This is a very long string that spans multiple lines without any need for manual concatenation.""";` 8. `{specific_prompt}`.}
I need upgrade this code :
{code}