Generics and prototype patter
Hello, I'm trying to do the following (see C# example code):
http://en.wikipedia.org/wiki/Prototype_pattern
This is (bad) a try in my code:
import......
publicclass DataFactory{
private DataFactory(){}
privatestatic HashMap<Type, Abstractdata><?>> instances =new HashMap<Type, Abstractdata><?>>();
static{
instances.put(Types.USER,Userdata.getInstance());
instances.put(Types.GROUP,Groupdata.getInstance());
}
publicstatic Abstractdata<?> getData(Type type){
return instances.get(type);
}
publicstaticenum Type{
USER, GROUP;
}
}
I also have singleton data classes (Userdata and Groupdata) that extend Abstractdata<User> and Abstractdata<Group> respectively. This is Abstractdata
import........
publicabstractclass Abstractdata<E>implements Observer{
protected LinkedList<E> data;
protectedstatic ConnectionPool cpp;
protected Abstractdata(){
cpp = ConnectionPool.getInstance();
this.data = this.getDataList();
}
publicabstractvoid add(E element)throws Exception;
publicabstractvoid update(Observable o, Object arg);
publicabstractvoid remove(E element)throws Exception;
protectedabstract LinkedList<E> getDataList();
public LinkedList<E> getData(){return this.data;}
public E get(int index){return this.data.get(index);}
publicint size(){return this.data.size();}
}
If I need some userdata, I do this:
Abstractdata<User> ud = DataFactory.getData(DataFactory.Types.USER);
but then I get an error saying:
Type mismatch: cannot convert from Abstractdata<capture-of ?> to Abstractdata<User>
How can I avoid this error?

