Re: Generics headache
Leonardo Teixeira Passos wrote:
yes tom, that was the problem indeed. I think I need some coffee...
Thanks.
I admit I have not completely figured out the logic behind the error, except
that there is no way for the raw type to be a supertype for the generic one.
It is a bit strange at first blush that Parser the raw type couldn't be a
supertype, but it makes sense overall that mixing raw types and generics would
cause trouble. In fact, I recommend getting rid of your
@SuppressWarnings("unchecked") annotations and just fixing the problems they hide.
There is a problem with the decomposition of the logic into:
abstract class Parser <T> // should be an interface
{
abstract public AST parse( Map<String, LinkedList<String> > parameters );
}
Notice that the abstract 'parse()' method, the sole purpose of the 'Parser'
interface, its entire raison d'??tre, does not use type 'T'. That means that
the type parameter is not necessary.
If you drop the parameterized type from 'Parser' and its implementing classes,
what happens?
public interface Parser
{
public AST parse( Map <String, List <String>> parameters );
}
[LinkedList changed to List - programming to interfaces]
--
Lew