I have this class:
public DrawItem {
    protected String getSeperator() {
        return "";
    }
    .......
    // some other methods
}
I've another class which extends DrawItem.
public DrawNumber extends DrawItem {
    @Override
    protected String getSeperator() {
        return "-";
    }
}
Now, in a generic class CombinationGenerator<E>, I'm trying to instantiate objects of DrawItem/DrawNumber. As instantiating a generic type is not possible in java (like new E(...)), I've created a Factory interface according to this answer.
public interface DrawItemFactory<E> {
    E create(...);
}
Then in the CombinationGenerator<E> class,
public class CombinationGenerator<E> {
    DrawItemFactory<E> factory;
    public CombinationGenerator<E>(DrawItemFactory<E> factory) {
        this.factory = factory;
    }
    public List<E> generate() {
        ......
        list.add(factory.create(...));
        ......
    }
}
And now the DrawNumber class implements DrawItemFactory<DrawItem> interface.
public DrawItem implements DrawItemFactory<DrawItem> {
    protected String getSeperator() {
        return "";
    }
    @Override
    public DrawItem create(...) {
        return new DrawItem(...);
    }
    .......
    // some other methods
}
And I can create CombinationGenerator<DrawItem> class.
DrawItem drawItem = new DrawItem(...);
CombinationGenerator<DrawItem> generator = new CombinationGenerator<DrawItem>(drawItem);
List<DrawItem> combinations = generator.generate();
So far, everything is fine. But when I try to create a DrawNumber class like this,
public DrawNumber implements DrawItemFactory<DrawNumber> {
     ....
}
It gives me the following error:
The interface DrawItemFactory cannot be implemented more than once with different arguments: DrawItemFactory<DrawItem> and DrawItemFactory<DrawNumber>
I've tried this solution but I got the same error. Is there any other way to do this?
 
     
    