Generics
Introduced : J2SE 5.
By using Generics we can store any type of objects. before generics we use collections, for storing different types of objects.
Advantages:
1.Type-Safety: we can hold a single type of objects. can't store other objects.
2.No need of Type Casting : no need to type cast the objects.
Ex: List list = new ArrayList();
list.add("helloworld");
String s = (String) list.get(0);//typecasting
with Generics
List<String> list = new ArrayList<String>();
list.add("helloworld");
String s = list.get(0);
3. Compile time checking : there won't be any problem at runtime because it checked at compile time only.
Ex: List<String> list = new ArrayList<String>();
list.add("helloworld");
list.add(32);//Compile Time Error
How to use Generic Collection:
class/Interface<Type>
Ex1:General Example for Generic ArrayList
import java.util.ArrayList;
import java.util.Iterator;
public class TestGenerics {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("java");
list.add("C");
//list.add(12);//CompileTime Error
String s=list.get(1);//type casting is not required
System.out.println("Value is: "+s);
Iterator<String> itr=list.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
----------------------------------------------------------------------------------------------------------------
1.Generic Class:
A class that can refer any type of object is known as generic class.
Creating:
class ExGen<T>{
T obj;
void add(T obj)
{
this.obj=obj;
}
T get()
{
return obj;
}
}
here 'T ' parameter used to create generic class of specific type.
using created Generics class:
2.Generic Method:
used for accepting any type of argument.
ex:
public class TestGenMethod {
public static < E > void printElements(E[] elements) {
for ( E element : elements){
System.out.println(element );
}
System.out.println();
}
public static void main( String args[] ) {
Integer[] intElems = { 10, 20, 30, 40, 50 };
Character[] charElems = { 'J', 'A', 'V', 'A', 'T','P','O','I','N','T' };
System.out.println( "Printing Integer Elements" );
printElements( intArray );
System.out.println( "Printing Character Elements" );
printElements( charArray );
}
}
---------------------------------------------------------------------------------------------------------------------
3.Wild Cards in Java Generics:
?--wild card character
ex: if we write <? extends Number>, i.e any child class of Number like Integer,Float,Doublet etc.
Now we can call the method of Number class through any child class object.
import java.util.ArrayList;
import java.util.List;
public class TestWildcarGen{
//creating a method that accepts only child class of Element
public static void printElements(List<? extends Number> elems){
for(Number s:elems){
System.out.println(s);
}
}
public static void main(String args[]){
List<Integer> list1=new ArrayList<Integer>();
list1.add(12); list1.add(42);
List<Float> list2=new ArrayList<Float>();
list2.add(12.89f);
list2.add(123.90f);
printElements(list1);
printElements(list2);
List<String> list3=new ArrayList<String>();
list3.add("java");
list3.add(".net");
printElements(list3); //CE
}}
Introduced : J2SE 5.
By using Generics we can store any type of objects. before generics we use collections, for storing different types of objects.
Advantages:
1.Type-Safety: we can hold a single type of objects. can't store other objects.
2.No need of Type Casting : no need to type cast the objects.
Ex: List list = new ArrayList();
list.add("helloworld");
String s = (String) list.get(0);//typecasting
with Generics
List<String> list = new ArrayList<String>();
list.add("helloworld");
String s = list.get(0);
3. Compile time checking : there won't be any problem at runtime because it checked at compile time only.
Ex: List<String> list = new ArrayList<String>();
list.add("helloworld");
list.add(32);//Compile Time Error
How to use Generic Collection:
class/Interface<Type>
Ex1:General Example for Generic ArrayList
import java.util.ArrayList;
import java.util.Iterator;
public class TestGenerics {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList<String>();
list.add("java");
list.add("C");
//list.add(12);//CompileTime Error
String s=list.get(1);//type casting is not required
System.out.println("Value is: "+s);
Iterator<String> itr=list.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
}
}
----------------------------------------------------------------------------------------------------------------
1.Generic Class:
A class that can refer any type of object is known as generic class.
Creating:
class ExGen<T>{
T obj;
void add(T obj)
{
this.obj=obj;
}
T get()
{
return obj;
}
}
here 'T ' parameter used to create generic class of specific type.
using created Generics class:
class TestExGen{
public static void main(String args[]){
ExGen<Integer> x=new ExGen<Integer>();
x.add(12);
x.add("java");//CE(compile time error)
syso(x.get());
}
}
Type Parameters:
the naming conventions for type parameters are important. commonly used type parameters.
1.T---specifies Type
2.E---Specifies Element
3.K-- Specifies key
4.N--Specifies Number
5.V--specifies Value
-----------------------------------------------------------------------------------------------------------------2.Generic Method:
used for accepting any type of argument.
ex:
public class TestGenMethod {
public static < E > void printElements(E[] elements) {
for ( E element : elements){
System.out.println(element );
}
System.out.println();
}
public static void main( String args[] ) {
Integer[] intElems = { 10, 20, 30, 40, 50 };
Character[] charElems = { 'J', 'A', 'V', 'A', 'T','P','O','I','N','T' };
System.out.println( "Printing Integer Elements" );
printElements( intArray );
System.out.println( "Printing Character Elements" );
printElements( charArray );
}
}
---------------------------------------------------------------------------------------------------------------------
3.Wild Cards in Java Generics:
?--wild card character
ex: if we write <? extends Number>, i.e any child class of Number like Integer,Float,Doublet etc.
Now we can call the method of Number class through any child class object.
import java.util.ArrayList;
import java.util.List;
public class TestWildcarGen{
//creating a method that accepts only child class of Element
public static void printElements(List<? extends Number> elems){
for(Number s:elems){
System.out.println(s);
}
}
public static void main(String args[]){
List<Integer> list1=new ArrayList<Integer>();
list1.add(12); list1.add(42);
List<Float> list2=new ArrayList<Float>();
list2.add(12.89f);
list2.add(123.90f);
printElements(list1);
printElements(list2);
List<String> list3=new ArrayList<String>();
list3.add("java");
list3.add(".net");
printElements(list3); //CE
}}
Comments
Post a Comment