Seite 2 von 2

Verfasst: Mittwoch 2. September 2009, 12:54
von lunar
Als Klassenattribut (aka statische Variable) kann das doch auch in Java nicht funktionieren. Wie sollte das den ausgewertet werden?

Verfasst: Mittwoch 2. September 2009, 14:33
von sma
Nope, dies hier funktioniert:

Code: Alles auswählen

public class Foo {
	static Bar bar = Bar.baz;
}

public  class Bar extends Foo {
  static Bar baz = new Bar();
  static {
    System.out.println(Foo.bar);
  }
}
Ruft man `new Foo().bar` auf, erhält man ein `Bar`-Exemplar, allerdings zeigt das `println`, dass wenn die Klasse `Bar` initialisiert wird, offensichtlich `Foo` noch nicht initialisiert wurde. In Java ist es nicht notwendig, dass der class initializer der Oberklasse vor dem der Unterklasse ausgeführt wird.

Stefan

Verfasst: Mittwoch 2. September 2009, 14:37
von lunar
Aha, danke für die Erklärung :)