Uploaded on Sep 18, 2020
www.acem.edu.in
Generic programming in Java
Object Oriented Using Java - Generic in Java PRESENTED BY: ANSHU SHARMA GENERICS IN JAVA Generics in Java is similar to templates in C++. The idea is to allow type (Integer, String, … etc and user defined types) to be a parameter to methods, classes and interfaces. For example, classes like HashSet, ArrayList, HashMap, etc use generics very well. We can use them for any type. GENERIC CLASS we use to specify parameter types in generic class creation. To create objects of generic class, we use following syntax. // To create an instance of generic class BaseType obj = new BaseType () Note: In Parameter type we can not use primitives like 'int','char' or 'double'. EXAMPLES: GENERIC CLASS / A Simple Java program to show working of user defined Generic classes // We use < > to specify Parameter type class Test { // An object of type T is declared T obj; Test(T obj) { this.obj = obj; } // constructor public T getObject() { return this.obj; } } EXAMPLE CONTD. class Main { public static void main (String[] args) { // instance of Integer type Test iObj = new Test(15); System.out.println(iObj.getObject()); // instance of String type Test sObj = new Test("GeeksForGeeks"); System.out.println(sObj.getObject()); } } MULTIPLE TYPE PARAMETERS IN GENERIC CLASSES We can also pass multiple Type parameters in Generic classes. // A Simple Java program to show multiple // type parameters in Java Generics // We use < > to specify Parameter type class Test { T obj1; // An object of type T U obj2; // An object of type U // constructor Test(T obj1, U obj2) { this.obj1 = obj1; this.obj2 = obj2; } EXAMPLE CONTD. // To print objects of T and U public void print() { System.out.println(obj1); System.out.println(obj2); } } // Driver class to test above class Main { public static void main (String[] args) { Test obj = new Test("GfG", 15); obj.print(); } } GENERIC FUNCTIONS: We can also write generic functions that can be called with different types of arguments based on the type of arguments passed to generic method, the compiler handles each method. EXAMPLE: // A Simple Java program to show working of user defined // Generic functions class Test { // A Generic method example static void genericDisplay (T element) { System.out.println(element.getClass().getName() + " = " + element); } EXAMPLE CONTD. // Driver method public static void main(String[] args) { // Calling generic method with Integer argument genericDisplay(11); // Calling generic method with String argument genericDisplay("GeeksForGeeks"); // Calling generic method with double argument genericDisplay(1.0); } } ADVANTAGES OF JAVA GENERICS 1. Code Reusability Generics allow us to write code that will work with different types of data. For example, public void genericsMethod(T data) {...} Here, we have created a generics method. This method can be used to perform operations on integer data, string data and so on. ADVANTAGES CONTD. 2. Compile-time Type Checking The type parameter of generics provides information about the type of data used in the generics code. Hence, any error can be identified at compile time which is easier to fix than runtime errors. For example, // without using Generics NormalClass list = new NormalClass(); // calls method of NormalClass list.display("String"); In the above code, we have a normal class. We call the method named display() of this class by passing a string data. Here, the compiler does not know if the value passed in the argument is correct or not. ADVANTAGES CONTD. However, let's see what will happen if we use the generics class instead. // using Generics GenericsClass list = new GenericsClass(); // calls method of GenericsClass list2.display("String"); In the above code, we have a generics class. Here, the type parameter indicates that the class is working on Integer data. Hence when the string data is passed in argument, the compiler will generate an error.
Comments