Re: Advanced Java Generics syntax question

Dilum Ranatunga <[email protected]> Fri, 15 Feb 2008 17:20:45 -0600
Newsgroups gmane.comp.windows.devel.java.advanced
Message-ID <[email protected]>
Sorry -- I meant override.

On Feb 15, 2008 5:20 PM, Dilum Ranatunga <[email protected]> wrote:
> Note that doing this doesn't allow you to overload the super class's
> method elegantly. For example:
>
>     public void testAnonymousSubclass() {
>         List<String> list = new ArrayList<String>() {
>             public boolean contains(String candidate) {
>                 if (candidate == null) {
>                     return super.contains(null);
>                 }
>                 for (String element : this) {
>                     if (candidate.equalsIgnoreCase(element)) {
>                         return true;
>                     }
>                 }
>                 return false;
>             }
>         };
>         list.add("a");
>         assertFalse(list.contains("A"));
>         // contains(Object) was called; not contains(String).
>     }
>
>
> On Feb 15, 2008 3:19 PM, Brian Maso <[email protected]> wrote:
> > Yup, that did it. That was driving me crazy! Thanks!
> >
> > Brian Maso
> >
> >
> > At 01:08 PM 2/15/2008, you wrote:
> > >Brian Maso wrote:
> > >>I want to define an anonymous subclass of a generic class -- how do I
> > >>set the parameter type?
> > >>
> > >>Here's a non-anonymous example of a subclass binding the superclass
> > >>type variable:
> > >>
> > >>public LinkedListOfStrings extends LinkedList<String> {
> > >>   ...
> > >>}
> > >>
> > >>That's no problem. Now let's say I want to do the same thing but with
> > >>an anonymous inner class:
> > >>
> > >>class Outer {
> > >>
> > >>   public void someMethod() {
> > >>
> > >>     LinkedList<String> lls = new LinkedList() {  <-- how do I
> > >>indicate the superclass is LinkedList<String>?
> > >>       public void add( String s ) { ... }
> > >>       ...
> > >>     }
> > >>
> > >>   }
> > >>
> > >>}
> > >
> > >Sorry, previous post had following line transposed.
> > >
> > >LinkedList<String> lls = new LinkedList<String>() {
> > >       public void add( String s ) { ... }
> > >};
> > >
> > >===================================
> > >This list is hosted by DevelopMentor(R)  http://www.develop.com
> > >
> > >View archives and manage your subscription(s) at http://discuss.develop.com
> >
> > ===================================
> > This list is hosted by DevelopMentor(R)  http://www.develop.com
>
> >
> > View archives and manage your subscription(s) at http://discuss.develop.com
> >
>

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com