+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Warum kann eine Klasse nicht von einer eigenen, statischen inneren Klasse ableiten?

  1. #1
    Global Moderator Megabyte Themenstarter
    Avatar von Landei
    Registriert seit
    31.07.2013
    Ort
    Sandersdorf-Brehna
    Fachbeiträge
    1.003
    Genannt
    169 Post(s)
    Blog-Einträge
    27
    Warum geht das nicht (IDEA sagt "Cyclic inheritance involving mypackage.Foo")?

    Java Code:
    1.  
    2. //Does not compile
    3. public class Foo extends Foo.InnerFoo {
    4.     public static class InnerFoo {
    5.        
    6.     }
    7. }

    Dass es nicht bei "normalen" inneren Klassen erlaubt ist, ist einleuchtend, aber mir fällt kein guter Grund ein, warum das bei inneren statischen Klassen verboten sein soll...

    Noch weniger einsichtig ist für mich, dass das sogar Interfaces betrifft:

    Java Code:
    1.  
    2. //Does not compile
    3. public class Foo implements Foo.InnerFoo {
    4.     public interface InnerFoo {
    5.        
    6.     }
    7. }

    BTW: Mich interessiert das Thema, weil ich beim Lesen von https://www.sitepoint.com/self-types...avas-generics/ gefragt habe, ob sich die "Scaffold"-Klassen im Code-Beispiel unter "Private Hierarchy" nicht etwas eleganter "verstecken" lassen.
    Geändert von Landei (19.11.2016 um 15:52 Uhr)

  2. #2
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    319
    Genannt
    34 Post(s)
    Weil die innere statische Klasse Zugriff auf eine äußere statische Instanz der Klasse hat?
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  3. #3
    Global Moderator Megabyte Themenstarter
    Avatar von Landei
    Registriert seit
    31.07.2013
    Ort
    Sandersdorf-Brehna
    Fachbeiträge
    1.003
    Genannt
    169 Post(s)
    Blog-Einträge
    27
    Zitat Zitat von TMII Beitrag anzeigen
    Weil die innere statische Klasse Zugriff auf eine äußere statische Instanz der Klasse hat?
    Schon klar, aber was ist das konkrete Problem, das sich daraus ergibt? Sicher kann man damit zirkuläre Abhängigkeiten bauen, aber das ist an anderen Stellen in Java auch möglich.

  4. #4
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.716
    Genannt
    291 Post(s)
    https://coderanch.com/t/370965/java/...heritance-dont

    verlinkt einen Artikel in dem es früher noch ging,
    Java Tip 50: On the Parameter Constants pattern | JavaWorld

    später aber wohl nicht mehr
    However, your attempt to have the enclosing class implement the interface is giving the compiler a conniption fit. It can't know what the interface is until it compiles the class, but it can't compile the class because it doesn't understand the interface. I imagine the compiler could be implemented in such a way to make sense of this situation anyway. Maybe some do and some don't.
    Geändert von Landei (20.11.2016 um 13:08 Uhr) Grund: quote Tag repariert
    Hansa wird Meister

+ Antworten Thema als "gelöst" markieren

Direkt antworten Direkt antworten

Zu welchem Kontinent gehört Japan?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. warum wird Tabelle nur von eine vererbte klasse angezeigt(Hibernate)
    Von anni80 im Forum Java Enterprise Edition (Java EE)
    Antworten: 4
    Letzter Beitrag: 23.03.2015, 23:39
  2. toString einer Klasse liefert nicht das was erwartet wird.
    Von ZickZack im Forum Java-Grundlagen
    Antworten: 18
    Letzter Beitrag: 11.03.2015, 17:48
  3. Antworten: 2
    Letzter Beitrag: 28.08.2013, 08:47
  4. Antworten: 12
    Letzter Beitrag: 21.08.2013, 14:49
  5. (Errors) Eclipse meldet, dass der Zugriff auf eine Klasse nicht möglich ist
    Von Unregistriert im Forum Java-Grundlagen
    Antworten: 24
    Letzter Beitrag: 27.02.2010, 00:05

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •