Re: Generics headache
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---1533634552-2130662920-1217199323=:1753
Content-Type: TEXT/PLAIN; charset=UTF-8; format=flowed
Content-Transfer-Encoding: QUOTED-PRINTABLE
In the presented code fragment (made just to present the problem, as
faithfully as the original one), yes, the type variable is not
necessary, but in the real code it is perfectly suitable and
needed.
In case you are curious, feel free to browse the code in the CVS browser
for dcompframework, a SourceForge project. Comments are always welcome :)
On Sun, 27 Jul 2008, Lew wrote:
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, exc=
ept
that there is no way for the raw type to be a supertype for the generic o=
ne.
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 t=
hey
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 'Parse=
r'
interface, its entire raison d'=C3=AAtre, does not use type 'T'. That me=
ans 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
---1533634552-2130662920-1217199323=:1753--