Skip to main content

Java 25 Feature: Flexible Code Compilation by Pran Sukh

Java 25 Features

Java 25 Example: Primitive Pattern Matching


/* In java 25 you need explicit definition of class and main method, just for start it's easy to understand the execution.
 * But in real Object-Oriented applications you cannot go without classes and inheritance */

void main(){
    int i = 3;
    char any = 'P';

    oldWayOfUnBoxing(i);
    oldWayOfUnBoxing(any);

    checkObject(i);
    checkObject(any);
}

static void oldWayOfUnBoxing(Object obj) {
    if (obj instanceof Integer) {
        int i = ((Integer) obj).intValue(); // First obj is boxed to Integer then unboxed to int with .intValue of Integer class
        log("Primitive obj of type int is converted/unboxed to int with Integer class");
    }
    if (obj instanceof Character) {
        char c = ((Character) obj).charValue(); // First obj is boxed to Character then unboxed to char with .charValue of Character class
        log("Primitive obj of type char is converted/unboxed to char with Character class");
    }
}

/* Feature: primitive types in Java’s pattern-matching framework introduced in JEP 507 */
static void checkObject(Object o){
    if(o instanceof int i){ // if o is type int then bind it to i, no extra boilerplate code.
        log("primitive int is converted to int without any extra unboxing");
    }
    if(o instanceof char c){ // if o is type char then bind it to c
        log("primitive char is converted to char without any extra unboxing");
    }
}

static void log(String msg){
    System.out.println(msg);
}
    
If you face any issue to run this code, just for your information this feature in Java is still in preview — you need to enable this while compilation.

First copy the code and create a file with any name like PatternMatching.java

Place the file inside the jdk-25/bin/ folder.

Then run the following commands:

javac --enable-preview --release 25 PatternMatching.java

Then simply run the program with:

java --enable-preview PatternMatching

(pransukh.21@gmail.com)

Comments

Popular posts from this blog

Understanding the usage of underscore( _ ) of Python for beginner. On Python Hunter

Introduction: Just like you, a newbie in python scripting language, me too was confused about lot of new things in python that are not valid or available in other languages like Java, .Net etc. Just like other things i had seen the use of '_' underscore in python, at beginning level that flabbergasted me for a while.      With some research and practice i have summarised the following usage of '_' underscore in python. Hope you will find it helpful at beginning level. First Usage : Hold the previous output value. When used in interpreter. 1 2 3 4 5 6 7 _ = input () # For example you typed '5' print (_) # This will print '5' print ( int ( _ ) * int ( _ ) ) # This will print '25' print ( int ( _ ) + 10 ) The above will print '15', because last input was "5" and in above   line of code is producing '25' as output but not being handl...

regex in python python hunter

Regular Expressions is a powerful concept if understood clearly you can save your valuable time to extract out the particular text from huge string or paragraph. It is wildly pronounced as regex, it can help you to automate the boring stuff, like searching particular text form log files, python used this same concept in web scrapping. Below are some common examples to understand the regex. Method names will help you to have an idea that what exactly the regex is intended to do. if you don't understand any regex or want to create your own regex with your requirements then you can comment below, i'll reach you ASAP. Thanks. import re def phoneNumberPattern (): print ( "*" * 10 ) print ( "phoneNumberPattern()" ) regexObj = re . compile( r'\d\d\d-\d\d\d-\d\d\d\d' ) mo = regexObj . search( 'Find my phone number from this string 998-805-4332' ) print (mo . group()) def grouping (): print ( "*...

Understand the generators and yield keyword in python, on Python Hunter

Generators look like a function but there is huge difference b/w generators and function. Instead of return statements you will find only yield statements are used inside of the body of a generator , i.e. one or more yield statements.  In short the main feature of generator is that the last execution statement is kept remembered by python interpreter and the next time when the same generator is called the it execute from the last yield location instead of starting the location from TOP. And the state of all local variable(s) are kept safe, that means the local variable(s) will not change their value(s) at next call.      Follow the example to understand the concept. def gen():     yield 1     yield 2     yield 3     yield 4 f=gen() print(next(f)) # will print 1 print(next(f)) # will print 2 print(next(f)) # will print 3 Let's take a real example........... -------------------------------...