<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 3: super calls recurse infinitely if overridden twice</title><link>https://sourceforge.net/p/djava/bugs/3/</link><description>Recent changes to 3: super calls recurse infinitely if overridden twice</description><atom:link href="https://sourceforge.net/p/djava/bugs/3/feed.rss" rel="self"/><language>en</language><lastBuildDate>Sat, 17 May 2003 11:07:19 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/djava/bugs/3/feed.rss" rel="self" type="application/rss+xml"/><item><title>super calls recurse infinitely if overridden twice</title><link>https://sourceforge.net/p/djava/bugs/3/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;class A {&lt;br /&gt;
void foo() {&lt;br /&gt;
System.out.println(&amp;amp;quot;in A.foo()&amp;amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
class B extends A {&lt;br /&gt;
void foo() {&lt;br /&gt;
System.out.println(&amp;amp;quot;in B.foo()&amp;amp;quot;);&lt;br /&gt;
super.foo();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
class C extends B {&lt;br /&gt;
void foo() {&lt;br /&gt;
System.out.println(&amp;amp;quot;in C.foo()&amp;amp;quot;);&lt;br /&gt;
super.foo();&lt;br /&gt;
}&lt;br /&gt;
public static void main(String[] args) {&lt;br /&gt;
C obj = new C();&lt;br /&gt;
obj.foo();&lt;br /&gt;
}&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;If there is only one level of method overriding, the &lt;br /&gt;
generated 'super$foo' method is sufficient to get the &lt;br /&gt;
correct behavior.  But with two or more levels of &lt;br /&gt;
overriding, as in this example, both the super-class and &lt;br /&gt;
the super-super-class get a 'super$foo' method, and &lt;br /&gt;
there is no way to reach A's method using reflection &lt;br /&gt;
from an instance of C.&lt;/p&gt;
&lt;p&gt;A possible solution might be to generate 'A$super$foo' &lt;br /&gt;
and 'B$super$foo' method names (or something like &lt;br /&gt;
that), though that makes the dependency between &lt;br /&gt;
subclasses and superclasses more fragile.&lt;/p&gt;
&lt;p&gt;-- Dan Jacobs, President&lt;br /&gt;
ModelObjects Group&lt;br /&gt;
djacobs @ modelobjects . com&lt;/p&gt;
&lt;p&gt;(spaces added to avoid email sniffing from robots)&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Sat, 17 May 2003 11:07:19 -0000</pubDate><guid>https://sourceforge.net43e886348f909e97ecc0aedcadfd4fe98797c12f</guid></item></channel></rss>