Skip to main content

Java 25: Flexible Constructors

Java 25 Features

Java 25 Example: FlexibleConstructors

In Java 8

/*In java 8 the super constructor is needed to be the first call in child class constructor (if needed)*/ Super constructor gets first call in child constructor, this is not flexible-code, that means if super class is getting initialized even before initializing the child class, if child class initialization failed then super class constructor is created and will be useless.



public class FlexibleConstructors {
    public static void main(String[] args) {
        try {
            Cat cat = new Cat(true, "Russian Bob Cat");
            System.out.println("Animal Details: " + cat.breed + "--" + cat.domestic);

            Cat lion = new Cat(false, "African Lion");
            System.out.println("Animal Details: " + lion.breed + "--" + lion.domestic);
        } catch (IllegalArgumentException e) {
            System.out.println("Exception: " + e.getMessage());
        }
    }
}

class Animal {
    final String breed;

    Animal(String breed) {
        this.breed = breed;
    }
}

class Cat extends Animal {
    final boolean domestic;

    Cat(boolean domestic, String breed) {
        super(breed); /* <------- Super constructor gets first call in child constructor, this is not flexible-code */
        if (!domestic) {
            throw new IllegalArgumentException("We need only domestic cats");
        }
        this.domestic = domestic;
    }
}

In Java 25

/*But in java 25 the super constructor can be the used anywhere in child class*/ Super constructor gets flexible-call in child constructor, this is flexible-code, that means if child class is not getting initialized correctly then no need to call super class.


public class FlexibleConstructors {
    public static void main(String[] args) {
        var cat = new Cat(true, "Russian Bob Cat");
        System.out.println("Animal Details: " + cat.breed +"--"+ cat.domestic);

        var lion = new Cat(false, "African Lion");
        System.out.println("Animal Details: " + lion.breed +"--"+ lion.domestic);
    }
}
class Animal{
    final String breed;
    Animal(String breed){
        this.breed = breed;
    }
}

class Cat extends Animal{
    final boolean domestic;

    Cat(boolean domestic, String breed) {
        if(!domestic){
            throw new IllegalArgumentException("We need only domestic cats");
        }
        this.domestic = domestic;
        super(breed); /* <------- */ 
    }
}

    
  
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 FlexibleConstructors.java

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

Then run the following commands:

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

Then simply run the program with:

java --enable-preview FlexibleConstructors

(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 ( "*...

XSLT applyTemeplate tag by pran sukh on Python Hunter.

XSLT is used for presenting XML data in well structured way and in eye appealing sense. In XSLT we can define different templates and maintain criteria for XSLT processor to parse the XML data in and apply different template for different XML tags. Lets examine following example XML DATA. 1 2 3 4 5 6 7 8 9 10 <student id= "1" eCode= "e1" > <firstName> Python 1 </firstName> <lastName> Hunert 1 </lastName> <dob> <day> 01 </day> <month> Jan </month> <year> 1991 </year> </dob> <course> Programmer </course> </student> In above XML data we want to present student id with dark background and eCode with red background colors, First Name in blue color, last name in green color and date of birth in different modes, so it will look like this. Source File:- XML_DATA.xml 1 2 3 4 5 6 7 8 9 10 ...