How generics can be used in Class Factories
Lets see how generics can be used to create generic interface for class factories.
public class GenericFactory <E>
{
Class<E> thisClass=null;
public GenericFactory (Class iclass)
{
this.thisClass = iclass;
}
public E createInstance() throws IllegalAccessException,InstantiationException{
return(E)this.thisClass.newInstance();
}
}
The <E> is a type token that signals that this class has a type set when instantiated.
public class Myclass {
void print()
{
System.out.println("Hellooo");
}
}
public class Main {
public static void main(String[] args) throws IllegalAccessException, InstantiationException {
GenericFactory<Myclass> factory = new GenericFactory<Myclass>(Myclass.class);
Myclass myclass= factory.createInstance();
myclass.print();
}
}
Output:- Hellooo
We can see that, it is not necessary to cast the object returned from the factory.createInstance().
public class GenericFactory <E>
{
Class<E> thisClass=null;
public GenericFactory (Class iclass)
{
this.thisClass = iclass;
}
public E createInstance() throws IllegalAccessException,InstantiationException{
return(E)this.thisClass.newInstance();
}
}
The <E> is a type token that signals that this class has a type set when instantiated.
public class Myclass {
void print()
{
System.out.println("Hellooo");
}
}
public class Main {
public static void main(String[] args) throws IllegalAccessException, InstantiationException {
GenericFactory<Myclass> factory = new GenericFactory<Myclass>(Myclass.class);
Myclass myclass= factory.createInstance();
myclass.print();
}
}
Output:- Hellooo
We can see that, it is not necessary to cast the object returned from the factory.createInstance().
Comments
Post a Comment