Generics in Java Flashcards

1
Q

What are Generic?

A

Genericsmeansparameterized types. The idea is to allow type (Integer, String, … etc., and user-defined types) to be a parameter to methods, classes, and interfaces. Using Generics, it is possible to create classes that work with different data types.An entity such as class, interface, or method that operates on a parameterized type is a generic entity.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Why Generics?

A

TheObjectis the superclass of all other classes, and Object reference can refer to any object. These features lack type safety. Generics add that type of safety feature. We will discuss that type of safety feature in later examples.

Generics in Java are similar to templates in C++. For example, classes like HashSet, ArrayList, HashMap, etc., use generics very well. There are some fundamental differences between the two approaches to generic types.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Types of Java Generics

A

Generic Method:Generic Java method takes a parameter and returns some value after performing a task. It is exactly like a normal function, however, a generic method has type parameters that are cited by actual type. This allows the generic method to be used in a more general way. The compiler takes care of the type of safety which enables programmers to code easily since they do not have to perform long, individual type castings.

Generic Classes:A generic class is implemented exactly like a non-generic class. The only difference is that it contains a type parameter section. There can be more than one type of parameter, separated by a comma. The classes, which accept one or more parameters, ?are known as parameterized classes or parameterized types.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Generic Class

A

Generic Class

Like C++, we use <> to specify parameter types in generic class creation. To create objects of a generic class, we use the following syntax.

// To create an instance of generic class BaseType <Type> obj = new BaseType <Type>()</Type></Type>

Note:In Parameter type we can not use primitives like ‘int’,’char’ or ‘double’.

Java

// Java program to show working of user defined

// Generic classes

// We use < > to specify Parameter type

class Test<T> {</T>

// An object of type T is declared

T obj;

Test(T obj) { this.obj = obj; } // constructor

public T getObject() { return this.obj; }

}

// Driver class to test above

class Main {

public static void main(String[] args)

{

// instance of Integer type

Test<Integer> iObj = new Test<Integer>(15);</Integer></Integer>

System.out.println(iObj.getObject());

// instance of String type

Test<String> sObj</String>

= new Test<String>("GeeksForGeeks");</String>

System.out.println(sObj.getObject());

}

}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

multiple Type parameters in Generic classes.

A

We can also pass multiple Type parameters in Generic classes.

Java

// Java program to show multiple

// type parameters in Java Generics

// We use < > to specify Parameter type

class Test<T, U>

{

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;

}

// 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 <String, Integer> obj =

new Test<String, Integer>(“GfG”, 15);

obj.print();

}

}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Generic Functions

A

We can also write generic functions that can be called with different types of arguments based on the type of arguments passed to the generic method. The compiler handles each method.

Java

// Java program to show working of user defined

// Generic functions

class Test {

// A Generic method example

static <T> void genericDisplay(T element)</T>

{

System.out.println(element.getClass().getName()

+ “ = “ + element);

}

// 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);

}

}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Generics Work Only with Reference Types

A

When we declare an instance of a generic type, the type argument passed to the type parameter must be a reference type. We cannot use primitive data types likeint,char.

Test<int> obj = new Test<int>(20);</int></int>

The above line results in a compile-time error that can be resolved using type wrappers to encapsulate a primitive type.

But primitive type arrays can be passed to the type parameter because arrays are reference types.

ArrayList<int[]> a = new ArrayList<>();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Type Parameters in Java Generics

A

The type parameters naming conventions are important to learn generics thoroughly. The common type parameters are as follows:

T – Type

E – Element

K – Key

N – Number

V – Value

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Advantages of Generics:

A

. Code Reuse:We can write a method/class/interface once and use it for any type we want.

  1. Type Safety:Generics make errors to appear compile time than at run time (It’s always better to know problems in your code at compile time rather than making your code fail at run time). Suppose you want to create an ArrayList that store name of students, and if by mistake the programmer adds an integer object instead of a string, the compiler allows it. But, when we retrieve this data from ArrayList, it causes problems at runtime.
  2. Individual Type Casting is not needed:If we do not use generics, then, in the above example, every time we retrieve data from ArrayList, we have to typecast it. Typecasting at every retrieval operation is a big headache. If we already know that our list only holds string data, we need not typecast it every time.

4.Generics Promotes Code Reusability:With the help of generics in Java, we can write code that will work with different types of data. For example,

Let’s say we want to Sort the array elements of various data types like int, char, String etc.

Basically we will be needing different functions for different data types.

For simplicity, we will be using Bubble sort.

But by usingGenerics,we can achieve the code reusability feature.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Type-Safety

A

Arrays are always type-safe that is we can give the guarantee for the type of elements present inside the array. For example, if our programming requirement is to hold String type of objects it is recommended to use String array. In the case of a string array, we can add only string type of objects by mistake if we try to add any other type we will get compile time error.

Example:

Java

/*package whatever //do not write package name here */

import java.io.*;

class GFG {

public static void main (String[] args) {

String name[] =new String[500];

name[0] = “Vivek Yadav”;

name[1] = “Ravi”;

name[2] = new Integer(100);

}

}

Output:



How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Type-Casting

A

In the case of the array at the time of retrieval, it is not required to perform any type casting.

Java

/*package whatever //do not write package name here */

import java.io.*;

import java.util.*;

class GFG {

public static void main(String[] args)

{

String name[] = new String[500];

name[0] = “Vivek Yadav”;

name[1] = “Ravi”;

name[2] = new Integer(100);

}

}

Output:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

main objectives of generics are:

A

To provide type safety to the collections.

To resolve type casting problems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly