Hey, um folgendes geht es:
Wir behandeln in der Uni in Programmieren 2 gerade verschiedene Java-Features und haben uns in diesem Rahmen die anonymen Klassen etwas genauer angeschaut.
Dazu hieß es u.A., dass man überschriebene Methoden der Oberklasse oder des Interfaces problemlos abrufen könne, es bei neu implementierten Methoden allerdings etwas schwieriger sei und nur über spezielles Casting funktionieren würde.
Das habe ich eben Mal selbst ausprobiert und bei mir ging es komischerweise problemlos ohne Casting. Also zu Recherchegründen Mal ChatGPT und Google angeworfen und darauf gestoßen, dass es möglicherweise in der Jshell, die ich zum Testen verwendet habe, erlaubt sein könne, jedoch nicht in einem normalen Java-Programm (hier dann ein Compile-Fehler in Bezug auf den Typen).
Also habe ich das ganze in eine Main eingesetzt, kompiliert und nochmal ordnungsgemäß ausgeführt, aber auch hier funktioniert das Abrufen neu implementierter Methoden ohne Fehler.
Hier jetzt erst mal der Code
So, mein letzter Versuch war dann noch: Möglicherweise sind die Informationen der VL und meiner restlichen Quellen veraltet und dort wird ohne
Hier kam ich allerdings auch zu der Information, dass der Instanz der anonymen Klasse nur implizit der Typ der Oberklasse zugewiesen würde, insofern scheinbar Fehlanzeige.
Kann mir bitte jemand erklären, wieso dieser Code bei mir gültig ist, während sämtliche Quellen das verneinen?
Wir behandeln in der Uni in Programmieren 2 gerade verschiedene Java-Features und haben uns in diesem Rahmen die anonymen Klassen etwas genauer angeschaut.
Dazu hieß es u.A., dass man überschriebene Methoden der Oberklasse oder des Interfaces problemlos abrufen könne, es bei neu implementierten Methoden allerdings etwas schwieriger sei und nur über spezielles Casting funktionieren würde.
Das habe ich eben Mal selbst ausprobiert und bei mir ging es komischerweise problemlos ohne Casting. Also zu Recherchegründen Mal ChatGPT und Google angeworfen und darauf gestoßen, dass es möglicherweise in der Jshell, die ich zum Testen verwendet habe, erlaubt sein könne, jedoch nicht in einem normalen Java-Programm (hier dann ein Compile-Fehler in Bezug auf den Typen).
Also habe ich das ganze in eine Main eingesetzt, kompiliert und nochmal ordnungsgemäß ausgeführt, aber auch hier funktioniert das Abrufen neu implementierter Methoden ohne Fehler.
Hier jetzt erst mal der Code
Java:
public class Main {
public static void main(String[] args) {
class Pigeon {
void fly() { System.out.println("flies around"); }
}
var bird = new Pigeon() {
void flyHigh() { System.out.println("flies even higher"); }
};
bird.flyHigh();
}
}
So, mein letzter Versuch war dann noch: Möglicherweise sind die Informationen der VL und meiner restlichen Quellen veraltet und dort wird ohne
var
gearbeitet, in welchem Fall explizites Casting notwendig sein könnte?Hier kam ich allerdings auch zu der Information, dass der Instanz der anonymen Klasse nur implizit der Typ der Oberklasse zugewiesen würde, insofern scheinbar Fehlanzeige.
Kann mir bitte jemand erklären, wieso dieser Code bei mir gültig ist, während sämtliche Quellen das verneinen?
Zuletzt bearbeitet: