Illuminatiiiiii
10/27/2018 - 10:59 PM

Generic Methods & Constructors

For Episode 60 of the Java Series: https://youtu.be/UFv4PcwzcsI

class nonGenericClass{

    //Generic method. They can be used outside of generic classes and inside
    static <ArrayParam extends Number> double findHighestNumber(ArrayParam[] ourArray){
        double highestNumber = 0.0;
        for (int i = 0; i < ourArray.length;i++){
            if(ourArray[i].doubleValue() > highestNumber){
                highestNumber = ourArray[i].doubleValue();
            }
        }
        return highestNumber;
    }

}
public class Main {

    public static void main(String[] args) {

        //Our arrays of numbers
        Integer[] numbers = {1, 60, 20, 1};
        Double[] numbers2 = {3.0, 45.0, 121.1, 11.0};
//        String[] numbers3 = {"qwewqe", "safda", "asdad"};

        System.out.println(nonGenericClass.findHighestNumber(numbers));
        System.out.println(nonGenericClass.findHighestNumber(numbers2));
        //Cant do because of extension to numbers
//        System.out.println(nonGenericClass.findHighestNumber(numbers3));
    }
}
class nonGenericClass{

    double value;
    //Generic Constructor. Takes any object of the class Number or it's subclasses
    <A extends Number> nonGenericClass(A number){
        value = number.doubleValue();
    }

    public double getValue() {
        return value;
    }
}
public class Main {

    public static void main(String[] args) {

        int number = 10;
        nonGenericClass wow = new nonGenericClass(number); //Autoboxes int primitive into Integer Object since objects are needed with Generics, plus it has to be a subclass of Number anyway, and Integer is.
        System.out.println(wow.getValue());

        Double number2 = 12.0;
        nonGenericClass wow2 = new nonGenericClass(number2);
        System.out.println(wow2.getValue());
    }
}