├── .gitignore ├── .idea ├── description.html ├── project-template.xml ├── encodings.xml ├── vcs.xml ├── modules.xml ├── libraries │ └── validation_api_2_0_1_Final.xml ├── misc.xml └── workspace.xml ├── lib └── validation-api-2.0.1.Final.jar ├── java14.iml └── src └── com └── loiane ├── Person.java ├── Product.java └── Java14Features.java /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class -------------------------------------------------------------------------------- /.idea/description.html: -------------------------------------------------------------------------------- 1 | Simple Java application that includes a class with main() method -------------------------------------------------------------------------------- /.idea/project-template.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/validation-api-2.0.1.Final.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/loiane/java14-examples/HEAD/lib/validation-api-2.0.1.Final.jar -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/libraries/validation_api_2_0_1_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /java14.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/com/loiane/Person.java: -------------------------------------------------------------------------------- 1 | package com.loiane; 2 | 3 | import java.util.Objects; 4 | 5 | public class Person { 6 | private String name; 7 | private int age; 8 | 9 | public Person(String name, int age) { 10 | this.name = name; 11 | this.age = age; 12 | } 13 | 14 | @Override 15 | public boolean equals(Object obj) { 16 | if (this == obj) return true; 17 | if (obj == null) return false; 18 | if (obj instanceof Person person) { 19 | return age == person.age && 20 | Objects.equals(name, person.name); 21 | } 22 | return false; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/com/loiane/Product.java: -------------------------------------------------------------------------------- 1 | package com.loiane; 2 | 3 | import javax.validation.constraints.Min; 4 | import javax.validation.constraints.NotNull; 5 | 6 | public record Product( 7 | @NotNull String name, 8 | int quantity, 9 | @Min(1) double price) 10 | implements Comparable { 11 | 12 | private static int COUNT = 0; 13 | 14 | public Product { 15 | if (quantity < 1) { 16 | throw new IllegalArgumentException("Product needs to have at least 1 quantity"); 17 | } 18 | COUNT++; 19 | } 20 | 21 | static int count() { 22 | return COUNT; 23 | } 24 | 25 | @Override 26 | public int compareTo(Product o) { 27 | return 0; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/com/loiane/Java14Features.java: -------------------------------------------------------------------------------- 1 | package com.loiane; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class Java14Features { 6 | 7 | private enum DAY_OF_WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}; 8 | 9 | public static void main(String[] args) { 10 | patternMatchingPreview(); 11 | recordsPreview(); 12 | 13 | enhancedSwitchCase(DAY_OF_WEEK.FRIDAY); 14 | switchJava14(DAY_OF_WEEK.SATURDAY); 15 | 16 | textBlocks(); 17 | 18 | // need to add as parameter: -XX:+ShowCodeDetailsInExceptionMessages 19 | // helpfulNullPointerExceptions(); 20 | } 21 | 22 | private static void patternMatchingPreview() { 23 | var person1 = new Person("Mary", 25); 24 | var person2 = new Person("John", 26); 25 | System.out.println(person1.equals(person2)); 26 | } 27 | 28 | private static void helpfulNullPointerExceptions(){ 29 | String[][] matrix = new String[5][5]; 30 | matrix[1] = new String[5]; 31 | 32 | if (matrix[1][0].toUpperCase().equals("S")) { 33 | 34 | } 35 | } 36 | 37 | private static void recordsPreview() { 38 | 39 | var product = new Product("Coffee", 10, 1.5); 40 | System.out.println(Product.count()); 41 | 42 | var list = new ArrayList<>(); 43 | list.add(new Product("Phone", 5, 1000)); 44 | System.out.println(list); 45 | 46 | // "record" is not not keyword yet 47 | int record = 0; 48 | } 49 | 50 | private static String switchJava14(DAY_OF_WEEK dayOfWeek) { 51 | return switch (dayOfWeek) { 52 | case MONDAY: 53 | case TUESDAY: 54 | case WEDNESDAY: 55 | case THURSDAY: 56 | case FRIDAY: 57 | yield "Weekday"; 58 | case SATURDAY: 59 | case SUNDAY: 60 | yield "Weekend"; 61 | }; 62 | } 63 | 64 | private static String enhancedSwitchCase(DAY_OF_WEEK dayOfWeek) { 65 | return switch (dayOfWeek) { 66 | case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> "Weekday"; 67 | case SATURDAY, SUNDAY -> "Weekend"; 68 | }; 69 | } 70 | 71 | private static void textBlocks() { 72 | 73 | String beforeQuery = "update products\n" + 74 | " set quantityInStock = ?\n" + 75 | " ,modifiedDate = ?\n" + 76 | " ,modifiedBy = ?\n" + 77 | "where productCode = ?\n"; 78 | 79 | String updateQuery = """ 80 | update products 81 | set quantityInStock = ? 82 | ,modifiedDate = ? 83 | ,modifiedBy = ? 84 | where productCode = ? 85 | """; 86 | System.out.println(updateQuery); 87 | System.out.println("."); 88 | 89 | // new in Java 14 90 | String updateQuery2 = """ 91 | update products \ 92 | set quantityInStock = ? 93 | ,modifiedDate = ? 94 | ,modifiedBy = ? \s 95 | where productCode = ? 96 | """; 97 | System.out.println(updateQuery2); 98 | System.out.println("."); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 50 | 51 | 53 | 54 | 55 | 56 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 1585340264396 90 | 95 | 96 | 97 | 98 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | --------------------------------------------------------------------------------