Re: Delegation and generics craziness
- From: Mark Space <markspace@xxxxxxxxxxxxxx>
- Date: Mon, 11 Aug 2008 12:05:55 -0700
Steven Simpson wrote:
But 'delegate' only takes B keys - 'A's are too general, and you're trying to by-pass this restriction. The error is alerting you to this.
You may have to do something similar with V too; I haven't checked.
Yes, I think you do.
(You might be able to use <? super K>, but there are probably other methods which simultaneously impose <? extends K> or even <K>, so together they force you to use just <K>.)
I think the basic problem is that for a Map, K and V are both an input and an output. (You can get the keys out as well as put them in.) And <? extends X> doesn't work as an output. Semantically, it's just wrong. Of course, <? super X> doesn't work as an input, so you're stuck.
The correct type of the delegate might be Map<?,?>, but I'm not completely sure about that.
Fundamentally, as long as you can prove that only a certain type can go into the delegate, it might be ok to use the raw type. But this is kind of a no-no, so the <?,?> form might actually be the best, and equivalent to the raw type in this instance.
I'm not 100% sure, but that was my quick, gut-level analysis of the problem.
.
- Follow-Ups:
- Re: Delegation and generics craziness
- From: Tom Anderson
- Re: Delegation and generics craziness
- References:
- Delegation and generics craziness
- From: Sideswipe
- Re: Delegation and generics craziness
- From: Steven Simpson
- Delegation and generics craziness
- Prev by Date: Re: Determining the Main Class
- Next by Date: Re: wrting a soap response to file
- Previous by thread: Re: Delegation and generics craziness
- Next by thread: Re: Delegation and generics craziness
- Index(es):