Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ This project includes unit tests for key functionalities introduced in each Java
- [Java 12](src/test/java/pl/mperor/lab/java/Java12.java)
- [Java 13](src/test/java/pl/mperor/lab/java/Java13.java)
- [Java 14](src/test/java/pl/mperor/lab/java/Java14.java)
- [Java 15](src/test/java/pl/mperor/lab/java/Java15.java)

For detailed examples and tests of each feature, please refer to the individual source files linked above.
4 changes: 4 additions & 0 deletions src/main/java/pl/mperor/lab/java/sealed/AlsoFinal.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package pl.mperor.lab.java.sealed;

public final class AlsoFinal extends AlsoSealed {
}
8 changes: 8 additions & 0 deletions src/main/java/pl/mperor/lab/java/sealed/AlsoSealed.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package pl.mperor.lab.java.sealed;

public sealed class AlsoSealed implements Sealed permits AlsoFinal {

public String alsoSealedMethod() {
return "sealed";
}
}
8 changes: 8 additions & 0 deletions src/main/java/pl/mperor/lab/java/sealed/Final.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package pl.mperor.lab.java.sealed;

public final class Final implements Sealed {

public String finalMethod() {
return "final";
}
}
8 changes: 8 additions & 0 deletions src/main/java/pl/mperor/lab/java/sealed/NonSealed.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package pl.mperor.lab.java.sealed;

public non-sealed class NonSealed implements Sealed {

public String nonSealedMethod() {
return "non-sealed";
}
}
9 changes: 9 additions & 0 deletions src/main/java/pl/mperor/lab/java/sealed/Sealed.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package pl.mperor.lab.java.sealed;

public sealed interface Sealed permits AlsoSealed, NonSealed, Final {

default String sealedMethod() {
return "sealed";
}

}
33 changes: 33 additions & 0 deletions src/test/java/pl/mperor/lab/java/Java15.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package pl.mperor.lab.java;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import pl.mperor.lab.java.sealed.*;

/**
* Java 15 (September 2020)
*/
public class Java15 {

@Test
public void testSealedClasses() {
Assertions.assertTrue(Sealed.class.isSealed());
Assertions.assertFalse(NonSealed.class.isSealed());
Assertions.assertFalse(Final.class.isSealed());
Assertions.assertTrue(AlsoSealed.class.isSealed());
Assertions.assertFalse(AlsoFinal.class.isSealed());

Assertions.assertEquals("final", switchSealed(new Final()));
Assertions.assertEquals("non-sealed", switchSealed(new NonSealed()));
Assertions.assertEquals("sealed", switchSealed(new AlsoSealed()));
}

private String switchSealed(Sealed sealed) {
return switch (sealed) {
case AlsoSealed a -> a.alsoSealedMethod();
case Final f -> f.finalMethod();
case NonSealed ns -> ns.nonSealedMethod();
};
}

}