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(); + } + } +}