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
new file mode 100644
index 0000000000..74cf5edf9c
--- /dev/null
+++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/records/Person.java
@@ -0,0 +1,15 @@
+package com.baeldung.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/com/baeldung/whatsnew/sealedclasses/Employee.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java
new file mode 100644
index 0000000000..ec85c371b7
--- /dev/null
+++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Employee.java
@@ -0,0 +1,9 @@
+package com.baeldung.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/com/baeldung/whatsnew/sealedclasses/Manager.java b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java
new file mode 100644
index 0000000000..79c50b057e
--- /dev/null
+++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Manager.java
@@ -0,0 +1,4 @@
+package com.baeldung.whatsnew.sealedclasses;
+
+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
new file mode 100644
index 0000000000..2a52bc1a73
--- /dev/null
+++ b/core-java-modules/core-java-15/src/main/java/com/baeldung/whatsnew/sealedclasses/Person.java
@@ -0,0 +1,21 @@
+package com.baeldung.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();
+ }
+ }
+}