Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #26623

Re: can this be done with generics?

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED!not-for-mail
From Patrick Roemer <sangamon@netcologne.de>
Newsgroups comp.lang.java.programmer
Subject Re: can this be done with generics?
Date Tue, 26 Nov 2013 12:03:42 +0100
Organization news.netcologne.de
Lines 44
Distribution world
Message-ID <l71v6f$mj0$1@newsreader4.netcologne.de> (permalink)
References <slrnl9580s.42s.avl@gamma.logic.tuwien.ac.at> <l6ve31$4r8$1@newsreader4.netcologne.de> <bfhtunF18miU1@mid.individual.net>
NNTP-Posting-Host xdsl-78-34-146-223.netcologne.de
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1
Content-Transfer-Encoding 7bit
X-Trace newsreader4.netcologne.de 1385463823 23136 78.34.146.223 (26 Nov 2013 11:03:43 GMT)
X-Complaints-To abuse@netcologne.de
NNTP-Posting-Date Tue, 26 Nov 2013 11:03:43 +0000 (UTC)
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.0
In-Reply-To <bfhtunF18miU1@mid.individual.net>
Xref csiph.com comp.lang.java.programmer:26623

Show key headers only | View raw


Responding to Robert Klemme:
> On 25.11.2013 12:59, Patrick Roemer wrote:
>> Responding to Andreas Leitgeb:
> 
>>> Is there a way to use *generics* for the methods of class Foo such that
>>> each foo#() returns the *static* type on which the compiler saw it
>>> applied?
>>
>> Just a naive attempt... Not sure if this matches your use case and
>> requirements - this will only work for a one-level hierarchy with an
>> abstract root class and will probably require some ugly gymnastics
>> inside the Foo method implementations:
> 
> The approach is all but naive.  And it can actually be made to work with 
> deeper hierarchies in a type safe way.  There is only a single 
> @SuppressWarnings("unchecked") here:
> 
> package inh;
> 
> public class Foo<T extends Foo<?>> {
> 
>      public T foo() {
>          System.out.println(getClass().getName() + " in foo()");
>          return self();
>      }
> 
>      @SuppressWarnings("unchecked")
>      protected final T self() {
>          return (T) this;
>      }
> 
>      public static void main(String[] args) {
>          new Baz<Baz<?>>().foo().baz().bar();
>          new TheEnd().foo().last().baz().bar();
>      }
> 
> }

Very nice. The cast just manifests an implicit assumption, so I think
it's justified here. The wildcards are somewhat disconcerting - but
certainly better than not having a general solution at all. :)

Best regards,
Patrick

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-25 00:55 +0000
  Re: can this be done with generics? Arne Vajhøj <arne@vajhoej.dk> - 2013-11-24 21:11 -0500
    Re: can this be done with generics? Saxo <jeti789@web.de> - 2013-11-25 01:43 -0800
      Re: can this be done with generics? Saxo <jeti789@web.de> - 2013-11-25 01:47 -0800
      Re: can this be done with generics? Arne Vajhøj <arne@vajhoej.dk> - 2013-11-26 21:32 -0500
    Re: can this be done with generics? Silvio <silvio@internet.com> - 2013-11-25 11:30 +0100
      Re: can this be done with generics? Saxo <jeti789@web.de> - 2013-11-25 02:36 -0800
      Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-25 10:45 +0000
      Re: can this be done with generics? Arne Vajhøj <arne@vajhoej.dk> - 2013-11-26 21:35 -0500
        Re: can this be done with generics? Silvio <silvio@internet.com> - 2013-11-27 10:48 +0100
        Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-27 10:18 +0000
  Re: can this be done with generics? Patrick Roemer <sangamon@netcologne.de> - 2013-11-25 12:59 +0100
    Re: can this be done with generics? Robert Klemme <shortcutter@googlemail.com> - 2013-11-25 22:31 +0100
      Re: can this be done with generics? Patrick Roemer <sangamon@netcologne.de> - 2013-11-26 12:03 +0100
      Re: can this be done with generics? v_borchert@despammed.com (Volker Borchert) - 2013-11-26 21:32 +0000
        Re: can this be done with generics? Robert Klemme <shortcutter@googlemail.com> - 2013-11-26 23:30 +0100
      Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-27 18:53 +0000
        Re: can this be done with generics? Sebastian <news@seyweiler.dyndns.org> - 2013-11-28 22:28 +0100
          Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-30 14:21 +0000
  Re: can this be done with generics? Mike Amling <mamling@chaff.us> - 2013-11-25 09:02 -0600
    Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-26 01:04 +0000
      Re: can this be done with generics? Robert Klemme <shortcutter@googlemail.com> - 2013-11-26 08:16 +0100
        Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-26 20:42 +0000
    Re: can this be done with generics? Arne Vajhøj <arne@vajhoej.dk> - 2013-11-26 21:38 -0500
      Re: can this be done with generics? Mike Amling <mamling@chaff.us> - 2013-11-27 11:05 -0600
  Re: can this be done with generics? taqmcg@gmail.com - 2013-11-25 08:36 -0800
    Re: can this be done with generics? taqmcg@gmail.com - 2013-11-25 09:04 -0800
      Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-26 00:50 +0000
        Re: can this be done with generics? Arivald <NOSPAMarivald@interia.pl> - 2013-11-26 07:10 +0100
          Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-11-27 18:58 +0000
  Re: can this be done with generics? Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2013-12-07 09:04 -0800
    Re: can this be done with generics? Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2013-12-07 19:20 +0000
      Re: can this be done with generics? Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2013-12-10 11:14 -0800

csiph-web