2-Java 10-17 discussion
2-Java 10-17 discussion
-------------------
https://www.studytonight.com/java-11/java-11-string-new-methods
Java 10-17:
-------------
* Time-Based Release Versioning
* Local-Variable Type Inference (var)
* Switch Expressions
* Pattern Matching for instanceof
* Text Blocks , New Methods in String Class for Text Blocks
* Helpful NullPointerExceptions
* Records
* Sealed Classes
* Hidden Classes
* HTTP Client
* Project amber (java 12 onwards)
enum enhancement
Type interence:
--------------
var keyword, some important rules
Eg:
long population = 10L;
float weight = 79.8f;
double distance = 198654.77;
var total1 = cupsOfCoffee + population; // inferred type of total1 is long
var total2 = distance + population; // inferred type of total2 is double
var total3 = weight + population; // inferred type of total3 is float
Switch Expressions
-------------------
Preview in Java 12,13 and std in java 14
Multiple constraints per case
expression vs statement
yeilding a value
exhaustiveness cases
enum WeekDay {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
WeekDay day = WeekDay.TUESDAY;
switch (day) {
case MONDAY:
System.out.println("Let's meet!");
break;
case TUESDAY:
System.out.println("no meeting!");
break;
case WEDNESDAY:
System.out.println("Let's meet!");
break;
case THURSDAY:
System.out.println("no meeting!");
break;
case FRIDAY:
System.out.println("Let's meet!");
break;
case SATURDAY:
System.out.println("no meeting!");
break;
case SUNDAY:
System.out.println("Let's meet (although Sunday should be a free
day, man!)!");
break;
default:
System.out.println("Do I really need this?!");
break;
}
//statement vs expression
// switch (){
//
// }
// String value=switch (){
//
// };
// enum WeekDay {
// MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
// }
//
// WeekDay day = WeekDay.SATURDAY;
// String message= switch (day) {
// case MONDAY, WEDNESDAY,FRIDAY ->{
// LocalDate localDate=LocalDate.now();
// yield "let meet "+localDate;
// }
//
// case TUESDAY,THURSDAY,SATURDAY ->{
// LocalDate localDate=LocalDate.of(2011, Month.JANUARY, 11);
// yield "no meeting! "+ localDate;
// }
// case SUNDAY -> "Let's meet (although Sunday should be a free day,
man!)!";
// };
// System.out.println(message);
//Note:
// int day=1;
// String message= switch (day){
// case 1,3,5 -> "lets meet";
// case 2,4,6 -> "no meeting";
// case 7->{
// yield "i told you no meeting! sleep";
// }
// default -> throw new IllegalArgumentException("day must be bw 1-7");
// };
//
// System.out.println(message);
System.out.println(sql);
System.out.println(html);
Records
---------
What are Java Records and How to Use them Alongside Constructors and Methods?
-------------------------------------------------------------------------------
Adv: less code more stuff
interface Employable{
public double getNetSalary();
}
@Override
public double getNetSalary() {
return salary*0.7;
}
}
https://www.geeksforgeeks.org/what-are-java-records-and-how-to-use-them-alongside-
constructors-and-methods/
Sealed Classes
---------------
https://rollbar.com/blog/what-are-sealed-classes-in-java/#:~:text=A%20sealed
%20class%20is%20a,less%20prone%20to%20unintended%20extensions.