/home/wpollock1/public_html/Java/VarDemo.java

import java.io.*;
import java.net.*;
import java.util.*;

/**
 *  Demo of declaring and initializing variables.  The new "var"
 *  syntax comes with several restrictions, as shown below.  It is
 *  claimed that using var when legal makes code more readable.  You
 *  be the judge!
 *  Written 2024 by Wayne Pollock.
 */
public class VarDemo {
    /**  Exception handling omitted for clarity of the example. */
    public static void main ( String[] args ) throws Exception {
        //  Six regular declarations with initializers:
        int num = 10;
        String name = "Hymie";
        URL wpollock = new URI("https://wpollock.com/").toURL();
        BufferedReader reader = new BufferedReader( new FileReader("data.txt"));
        ArrayList<String> rooster = new ArrayList<>();
        int[] array = new int[4];

        // Rewritten to use "var":
        var num2 = 10;
        var name2 = "Hymie";
        var wpollock2 = new URI("https://wpollock.com/").toURL();
        var reader2 = new BufferedReader( new FileReader("data.txt"));
        var rooster2 = new ArrayList<String>();
        var array2 = new int[4];

        // None of the following are legal; See
        // docs.oracle.com/javase/specs/jls/se22/html/jls-14.html#jls-14.4-400-A
        // for the exact rules:
/*
        foo = "foo";  // no var keyword
        var foo;  // no initial value
        var nums = {1, 2, 3};  // Array initializer cannot use var
        var appendSpace = a -> a + " ";  // A "Lambda" cannot use var
        var compareString = String::compareTo;  // A method reference cannot use var
        var b = 2, c = 3;   // Illegal: multiple declarators cannot use var
        var array3[] = new int[4]; // Illegal: extra bracket pair after "3"
        var n = null;
*/
    }
}