Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #10846
| From | Daniel Pitts <newsgroup.nospam@virtualinfinity.net> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Generics ? |
| References | (2 earlier) <jchb74$n8m$1@dont-email.me> <2eOdnXdWwdSD2HHTnZ2dnUVZ_t6dnZ2d@posted.palinacquisition> <jcimia$9dh$1@dont-email.me> <jcioh3$k6d$1@dont-email.me> <jciqaq$ujj$1@dont-email.me> |
| Message-ID | <PKeHq.20143$c27.3382@newsfe22.iad> (permalink) |
| Date | 2011-12-17 21:20 -0800 |
On 12/17/11 11:25 AM, Knute Johnson wrote:
> On 12/17/2011 10:54 AM, markspace wrote:
>> On 12/17/2011 10:20 AM, Knute Johnson wrote:
>>> Which brings me back to my real question, can you
>>> extend a generic class and still be generic?
>>
>>
>> Yes of course.
>>
>>
>> > model.addElement("test");
>> > ^
>> > required: E#1
>> > found: String
>> > reason: actual argument String cannot be converted to E#1 by method
>> > invocation conversion
>>
>>
>> The problem is that you don't *have* a generic type. You have a
>> parametrized type of String. Otherwise, you can't stick a String in that
>> thing. Which is why the compiler is complaining.
>>
>> Roedy's example compiles because it matches what you did. It
>> parametrizes the type to String because that's what you have.
>>
>> No, you cannot have a "generic" class, then assume that you can also use
>> "string" as a type. Generics specifically prevent that.
>>
>> You could put a bound on the type of E, like <E super String> and I
>> think that would work (I didn't test it). But since that is basically
>> String, CharSequence, or Object, it's really kinda limiting while being
>> baroque at the same time. I'd just use "String" or "CharSequence" or
>> "Object" unless you're really sure that the ability to parametrize that
>> type is really important.
>
> Thanks for that and to John for giving me direction to follow.
>
> What I have learned about generics:
>
> You can't have a generic class and then attempt to use non-generic
> parameters. You can extend a parameterized(?) generic class (eg.
> JList<String>) and do what I was trying to do to it but then you are
> limited to String types, which is what I really needed anyway.
Incorrect. You can extend a generic class and narrow (or keep) the
generic parameters..
public class KList<E extends Serializable> extends JList<E> {
}
KList<String> foo;
KList<Integer> bar;
KList<MySerializable> baz;
You can also make concrete the parameter:
public class KListOfStrings extends JList<String> {
}
FWIW, you probably shouldn't be extending JList anyway. You should be
implementing ListModel and/or adding listeners to a JList. Pretty much
the only Swing "J*" class you ever really need to extend is JComponent.
> I did learn an interesting thing about JList however and that is that
> the no-arg constructor creates an anonymous class for it's read-only
> ListModel. I've got to look at the source and see what's up with that.
>
> This has only come up because I'm trying to compile some old code that
> was originally created in 1.5 and 1.6 with the new 1.7 compiler.
>
> Thanks again everybody for the pointers.
>
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-15 21:48 -0800
Re: Generics ? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-15 22:03 -0800
Re: Generics ? Tassilo Horn <tassilo@member.fsf.org> - 2011-12-16 08:30 +0100
Re: Generics ? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-16 00:08 -0800
Re: Generics ? Roedy Green <see_website@mindprod.com.invalid> - 2011-12-16 02:10 -0800
Re: Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-16 22:01 -0800
Re: Generics ? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-16 23:30 -0800
Re: Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-17 10:20 -0800
Re: Generics ? markspace <-@.> - 2011-12-17 10:54 -0800
Re: Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-17 11:25 -0800
Re: Generics ? Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-12-17 21:20 -0800
Re: Generics ? "Qu0ll" <Qu0llSixFour@gmail.com> - 2011-12-18 21:08 +1100
Re: Generics ? Lew <lewbloch@gmail.com> - 2011-12-18 08:17 -0800
Re: Generics ? markspace <-@.> - 2011-12-18 08:43 -0800
Re: Generics ? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-17 11:33 -0800
Re: Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-17 11:40 -0800
Re: Generics ? Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-12-17 11:47 -0800
Re: Generics ? Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-12-17 15:13 -0500
Re: Generics ? Roedy Green <see_website@mindprod.com.invalid> - 2011-12-17 02:46 -0800
Re: Generics ? "John B. Matthews" <nospam@nospam.invalid> - 2011-12-17 11:18 -0500
Re: Generics ? Knute Johnson <nospam@knutejohnson.com> - 2011-12-17 11:16 -0800
csiph-web