File tree Expand file tree Collapse file tree
src/main/java/com/ibrahimatay Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -10,6 +10,9 @@ This repository contains Java examples that are designed to track and document t
1010 * [ JEP 431] ( https://openjdk.org/jeps/431 ) : Sequenced Collections
1111 * [ JEP 444] ( https://openjdk.org/jeps/444 ) : Virtual Threads
1212
13+ * [ Java 17] ( java-17/ ) (September, 2021)
14+ * [ JEP 409] ( https://openjdk.org/jeps/409 ) : Sealed Classes
15+
1316* [ Java 16] ( java-16/ ) (March, 2021)
1417 * [ JEP 395] ( https://openjdk.java.net/jeps/395 ) : Records
1518
Original file line number Diff line number Diff line change 1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <project xmlns =" http://maven.apache.org/POM/4.0.0"
3+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
4+ xsi : schemaLocation =" http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
5+ <modelVersion >4.0.0</modelVersion >
6+ <parent >
7+ <groupId >com.ibrahimatay</groupId >
8+ <artifactId >Java-Features</artifactId >
9+ <version >1.0-SNAPSHOT</version >
10+ </parent >
11+
12+ <artifactId >java-17</artifactId >
13+
14+ <properties >
15+ <maven .compiler.source>17</maven .compiler.source>
16+ <maven .compiler.target>17</maven .compiler.target>
17+ <project .build.sourceEncoding>UTF-8</project .build.sourceEncoding>
18+ </properties >
19+
20+ </project >
Original file line number Diff line number Diff line change 1+ package com .ibrahimatay ;
2+
3+ /*
4+
5+ JEP 409: Sealed Classes
6+ https://openjdk.org/jeps/409
7+ */
8+
9+ import java .util .UUID ;
10+
11+ public class JEP409SealedClasses {
12+ public static void main (String [] args ) {
13+ System .out .println (getNumberOfSeats (new Truck (100 , UUID .randomUUID ().toString ())));
14+ System .out .println (getNumberOfSeats (new Car (20 , UUID .randomUUID ().toString ())));
15+ }
16+
17+ static int getNumberOfSeats (Vehicle vehicle ) {
18+ if (vehicle instanceof Car ) {
19+ return ((Car ) vehicle ).getNumberOfSeats ();
20+ } else if (vehicle instanceof Truck ) {
21+ return ((Truck ) vehicle ).getLoadCapacity ();
22+ } else {
23+ throw new RuntimeException ("Unknown instance of Vehicle" );
24+ }
25+ }
26+ }
27+
28+ sealed interface Vehicle permits Car , Truck {
29+ String getRegistrationNumber ();
30+ }
31+
32+ record Car (int numberOfSeats , String registrationNumber ) implements Vehicle {
33+
34+ @ Override
35+ public String getRegistrationNumber () {
36+ return registrationNumber ;
37+ }
38+
39+ public int getNumberOfSeats () {
40+ return numberOfSeats ;
41+ }
42+ }
43+
44+ record Truck (int loadCapacity , String registrationNumber ) implements Vehicle {
45+
46+ @ Override
47+ public String getRegistrationNumber () {
48+ return registrationNumber ;
49+ }
50+
51+ public int getLoadCapacity () {
52+ return loadCapacity ;
53+ }
54+ }
Original file line number Diff line number Diff line change 1818 <module >java-6</module >
1919 <module >java-16</module >
2020 <module >java-21</module >
21+ <module >java-17</module >
2122 </modules >
2223
2324 <properties >
You can’t perform that action at this time.
0 commit comments