From 2715bde82a18d5810a8c4100ea4ff9724a7b6604 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Wed, 11 Nov 2020 14:51:36 -0700 Subject: [PATCH 1/4] BAEL-4663: Whats new in Java 15 --- .../main/java/whatsnew/records/Person.java | 16 ++++++++++++ .../java/whatsnew/sealedclasses/Employee.java | 13 ++++++++++ .../java/whatsnew/sealedclasses/Manager.java | 4 +++ .../java/whatsnew/sealedclasses/Person.java | 25 +++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java create mode 100644 core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java create mode 100644 core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java create mode 100644 core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java b/core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java new file mode 100644 index 0000000000..9d668b1f85 --- /dev/null +++ b/core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java @@ -0,0 +1,16 @@ +package whatsnew.records; + +/** + * Java record with a header indicating 2 fields. + */ +public record Person(String name, int age) { + + /** + * Public constructor that does some basic validation. + */ + public Person { + if (age < 0) { + throw new IllegalArgumentException("Age cannot be negative"); + } + } +} diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java new file mode 100644 index 0000000000..72c73a4312 --- /dev/null +++ b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java @@ -0,0 +1,13 @@ +package whatsnew.sealedclasses; + +import java.util.Date; + +public non-sealed class Employee extends Person { + + public Date getHiredDate() + { + return new Date(); + } + + +} diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java new file mode 100644 index 0000000000..043a37182a --- /dev/null +++ b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java @@ -0,0 +1,4 @@ +package whatsnew.sealedclasses; + +public final class Manager extends Person { +} diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java new file mode 100644 index 0000000000..a5fca45772 --- /dev/null +++ b/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java @@ -0,0 +1,25 @@ +package whatsnew.sealedclasses; + +import java.util.Date; + +public sealed class Person permits Employee, Manager +{ + /** + * Demonstration of pattern matching for instanceof + * + * @param person A Person object + * @return + */ + public static void patternMatchingDemo(Person person) + { + if(person instanceof Employee employee) + { + Date hiredDate = employee.getHiredDate(); + } + + if(person instanceof Employee employee && employee.getHiredDate() != null) + { + Date hiredDate = employee.getHiredDate(); + } + } +} From b610c4d30444a6f2b211605076ea9b324091334f Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Sat, 14 Nov 2020 12:03:06 -0700 Subject: [PATCH 2/4] BAEL-4663: Rename packages --- core-java-modules/core-java-15/pom.xml | 4 ++-- .../main/java/{ => com/baeldung}/whatsnew/records/Person.java | 2 +- .../{ => com/baeldung}/whatsnew/sealedclasses/Employee.java | 2 +- .../{ => com/baeldung}/whatsnew/sealedclasses/Manager.java | 2 +- .../{ => com/baeldung}/whatsnew/sealedclasses/Person.java | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) rename core-java-modules/core-java-15/src/main/java/{ => com/baeldung}/whatsnew/records/Person.java (88%) rename core-java-modules/core-java-15/src/main/java/{ => com/baeldung}/whatsnew/sealedclasses/Employee.java (76%) rename core-java-modules/core-java-15/src/main/java/{ => com/baeldung}/whatsnew/sealedclasses/Manager.java (51%) rename core-java-modules/core-java-15/src/main/java/{ => com/baeldung}/whatsnew/sealedclasses/Person.java (92%) diff --git a/core-java-modules/core-java-15/pom.xml b/core-java-modules/core-java-15/pom.xml index c6f1454078..df8aeafca9 100644 --- a/core-java-modules/core-java-15/pom.xml +++ b/core-java-modules/core-java-15/pom.xml @@ -51,8 +51,8 @@ ${maven.compiler.release} --enable-preview - 15 - 15 + 14 + 14 diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java similarity index 88% rename from core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java rename to core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java index 9d668b1f85..e59fa86ed6 100644 --- a/core-java-modules/core-java-15/src/main/java/whatsnew/records/Person.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java @@ -1,4 +1,4 @@ -package whatsnew.records; +package com.baeldung.whatsnew.records; /** * Java record with a header indicating 2 fields. diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java similarity index 76% rename from core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java rename to core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java index 72c73a4312..e9a2e25417 100644 --- a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Employee.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java @@ -1,4 +1,4 @@ -package whatsnew.sealedclasses; +package com.baeldung.whatsnew.sealedclasses; import java.util.Date; diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java similarity index 51% rename from core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java rename to core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java index 043a37182a..79c50b057e 100644 --- a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Manager.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java @@ -1,4 +1,4 @@ -package whatsnew.sealedclasses; +package com.baeldung.whatsnew.sealedclasses; public final class Manager extends Person { } diff --git a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java similarity index 92% rename from core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java rename to core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java index a5fca45772..d4beb64867 100644 --- a/core-java-modules/core-java-15/src/main/java/whatsnew/sealedclasses/Person.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java @@ -1,4 +1,4 @@ -package whatsnew.sealedclasses; +package com.baeldung.whatsnew.sealedclasses; import java.util.Date; From 4164ff6a03ad8b97622e08467d638bc3e849ea79 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Mon, 16 Nov 2020 21:48:14 -0700 Subject: [PATCH 3/4] Updates from PR comments --- core-java-modules/core-java-15/pom.xml | 4 ++-- .../java/com/baeldung/whatsnew/records/Person.java | 10 ++++++---- .../com/baeldung/whatsnew/sealedclasses/Employee.java | 6 ++---- .../com/baeldung/whatsnew/sealedclasses/Manager.java | 3 ++- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/core-java-modules/core-java-15/pom.xml b/core-java-modules/core-java-15/pom.xml index df8aeafca9..c6f1454078 100644 --- a/core-java-modules/core-java-15/pom.xml +++ b/core-java-modules/core-java-15/pom.xml @@ -51,8 +51,8 @@ ${maven.compiler.release} --enable-preview - 14 - 14 + 15 + 15 diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java index e59fa86ed6..67d3151440 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java @@ -3,13 +3,15 @@ package com.baeldung.whatsnew.records; /** * Java record with a header indicating 2 fields. */ -public record Person(String name, int age) { - +public record Person(String name, int age) +{ /** * Public constructor that does some basic validation. */ - public Person { - if (age < 0) { + public Person + { + if (age < 0) + { throw new IllegalArgumentException("Age cannot be negative"); } } diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java index e9a2e25417..72ef75cb7c 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java @@ -2,12 +2,10 @@ package com.baeldung.whatsnew.sealedclasses; import java.util.Date; -public non-sealed class Employee extends Person { - +public non-sealed class Employee extends Person +{ public Date getHiredDate() { return new Date(); } - - } diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java index 79c50b057e..87cbcf2673 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java @@ -1,4 +1,5 @@ package com.baeldung.whatsnew.sealedclasses; -public final class Manager extends Person { +public final class Manager extends Person +{ } From 567a63cb7da115bfa85690dc1c94dcbb67b8e3f5 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Fri, 20 Nov 2020 07:49:50 -0700 Subject: [PATCH 4/4] Update formatting --- core-java-modules/core-java-15/pom.xml | 4 ++-- .../java/com/baeldung/whatsnew/records/Person.java | 9 +++------ .../baeldung/whatsnew/sealedclasses/Employee.java | 6 ++---- .../com/baeldung/whatsnew/sealedclasses/Manager.java | 3 +-- .../com/baeldung/whatsnew/sealedclasses/Person.java | 12 ++++-------- 5 files changed, 12 insertions(+), 22 deletions(-) diff --git a/core-java-modules/core-java-15/pom.xml b/core-java-modules/core-java-15/pom.xml index c6f1454078..df8aeafca9 100644 --- a/core-java-modules/core-java-15/pom.xml +++ b/core-java-modules/core-java-15/pom.xml @@ -51,8 +51,8 @@ ${maven.compiler.release} --enable-preview - 15 - 15 + 14 + 14 diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java index 67d3151440..74cf5edf9c 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java @@ -3,15 +3,12 @@ package com.baeldung.whatsnew.records; /** * Java record with a header indicating 2 fields. */ -public record Person(String name, int age) -{ +public record Person(String name, int age) { /** * Public constructor that does some basic validation. */ - public Person - { - if (age < 0) - { + public Person { + if (age < 0) { throw new IllegalArgumentException("Age cannot be negative"); } } diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java index 72ef75cb7c..ec85c371b7 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java @@ -2,10 +2,8 @@ package com.baeldung.whatsnew.sealedclasses; import java.util.Date; -public non-sealed class Employee extends Person -{ - public Date getHiredDate() - { +public non-sealed class Employee extends Person { + public Date getHiredDate() { return new Date(); } } diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java index 87cbcf2673..79c50b057e 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java @@ -1,5 +1,4 @@ package com.baeldung.whatsnew.sealedclasses; -public final class Manager extends Person -{ +public final class Manager extends Person { } diff --git a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java index d4beb64867..2a52bc1a73 100644 --- a/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java +++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java @@ -2,23 +2,19 @@ package com.baeldung.whatsnew.sealedclasses; import java.util.Date; -public sealed class Person permits Employee, Manager -{ +public sealed class Person permits Employee, Manager { /** * Demonstration of pattern matching for instanceof * * @param person A Person object * @return */ - public static void patternMatchingDemo(Person person) - { - if(person instanceof Employee employee) - { + public static void patternMatchingDemo(Person person) { + if(person instanceof Employee employee) { Date hiredDate = employee.getHiredDate(); } - if(person instanceof Employee employee && employee.getHiredDate() != null) - { + if(person instanceof Employee employee && employee.getHiredDate() != null) { Date hiredDate = employee.getHiredDate(); } }