anonyme nicht-lokale Klassen

momesana

Mitglied
Ne kleine Frage zu anonymen Klassen:
das java Tutorial von Oracle sagt folgendes zu anonymen Klassen:
. You can declare an inner class within the body of a method. Such a class is known as a local inner class. You can also declare an inner class within the body of a method without naming it. These classes are known as anonymous inner classes.
So möchte man annehmen dass anonyme Klassen auch immer anonyme lokale Klassen sind. Nichtsdestotrotz ist folgendes möglich:

=============
Outer.java
=============
Java:
public class Outer {
	// Mietgliedsinterface
	interface X {
		public String s = "string defined in X";
		public void print();
	}

	// anonyme nicht-lokale Klasse
	X x = new X() {
		@Override
		public void print() {
			System.out.println(s);
			
		}
	};

	 public Outer() {
	 }
	 
	 public void printInner() {
		 x.print();
	 }

}

============
Main.java
============
Java:
public class Main {
	public static void main(String[] args) {
		Outer outer = new Outer();
		outer.printInner();
	}
}
Wieso sagt dann die doc von oracle folgendes:
You can also declare an inner class within the body of a method without naming it. These classes are known as anonymous inner classes.

Danke im voraus
 

tfa

Top Contributor
Wo definierst du in deinem Beispiel eine Klasse innerhalb einer Methode? Ich sehen keinen Zusammenhang mit dem Text.
 

momesana

Mitglied
hm, erstens ist deine Klasse X weder anonym, noch in einem methodenrumpf deklariert. zweitens steht da

nix von "local". ist doch alles in ordnung! :D
Falsch! Sie ist anonym. Sie kann nämlich nicht beliebig instanziert werden und es wird auf jeden Fall eine Instanz erstellt:
Eigenschaften Anonymer Klassen:
* haben keine Namen (Damit ist nicht der Bezeichner gemeint!!!)
* Es wird immer automatisch eine Instanz erzeugt
* Können aufgrund des fehlenden Namens nicht beliebig instanziert werden.
 

momesana

Mitglied
hm, erstens ist deine Klasse X weder anonym, noch in einem methodenrumpf deklariert. zweitens steht da

nix von "local". ist doch alles in ordnung! :D
Genau darum geht es ja. Es ist eine anonyme aber nicht-lokale Klasse. Die Wortwahl beim Tutorial legt jedoch nahe dass es sich bei Anonymen klassen auch immer um eine lokale Klasse handelt. Ich habe den Teil extra im Zitat hervorgehoben damit nicht solche Kommentare kommen. Hat wohl nicht funktioniert.

You can also declare an inner class within the body of a method without naming it. These classes are known as anonymous inner classes.

"These classes" bezieht sich auf "
class within the body of a method
". Und diese heißen ja demnach"
known as anonymous inner classes
". Müsste aber heißen: anonymous local inner classes.
 
Zuletzt bearbeitet:

Atze

Top Contributor
Falsch! Sie ist anonym. Sie kann nämlich nicht beliebig instanziert werden und es wird auf jeden Fall eine Instanz erstellt:
Eigenschaften Anonymer Klassen:
* haben keine Namen (Damit ist nicht der Bezeichner gemeint!!!)
* Es wird immer automatisch eine Instanz erzeugt
* Können aufgrund des fehlenden Namens nicht beliebig instanziert werden.

ok, dann hatte ich das falsch in erinnerung! mein fehler!

aber local verstehe ich wie lokale variablen, und sie ist ja bei deinem bsp nicht lokal in der methode. :) und da sich der text auf beide arten bezieht, lokal und innerhalt der umgebenden klasse, muss es in dem letzten satz nicht local heißen, imho!
 

momesana

Mitglied
ok, dann hatte ich das falsch in erinnerung! mein fehler!

aber local verstehe ich wie lokale variablen, und sie ist ja bei deinem bsp nicht lokal in der methode. :) und da sich der text auf beide arten bezieht, lokal und innerhalt der umgebenden klasse, muss es in dem letzten satz nicht local heißen, imho!

You can also declare an inner class within the body of a method without naming it. These classes are known as anonymous inner classes.

Also der Text sagt grob übersetzt folgendes: Man kann auch eine innere Klasse innerhalb eines Methoden-Rumpfes deklarieren ohne es zu benennen. Dabei spricht man von anonymen inneren Klassen. Das führt zu folgender Assoziiation in den Köpfen eines aufmerksamen Lesers: Anonyme Klassen sind auch immer lokale Klassen. Wenn das Tutorial von einem x-beliebigen wäre hätte ich nicht so eine Korinthenkackerei betrieben aber da es das Standardtutorial von Oracle/Sun (den Machern von Java) ist wollte ich es mal angesprochen haben. Lassen wir jetzt die unnütze Haarspalterei. Danke euch für eure Beiträge :)
 

tfa

Top Contributor
momesana hat gesagt.:
Das führt zu folgender Assoziiation in den Köpfen eines aufmerksamen Lesers: Anonyme Klassen sind auch immer lokale Klassen.
Das ist ein unzulässiger Rückschluss. Wenn A aus B folgt, heißt dass lange noch nicht, dass B aus A folgen muss.
 

Atze

Top Contributor
ja momesana, DU liest das so und verstehst das falsch, sonst keiner! :) jedenfalls ist das verständnisproblem hier noch nie aufgetaucht! :) musst du wohl mit klarkommen oder an oracle mailen :)
 

momesana

Mitglied
ja momesana, DU liest das so und verstehst das falsch, sonst keiner! :) jedenfalls ist das verständnisproblem hier noch nie aufgetaucht! :) musst du wohl mit klarkommen oder an oracle mailen :)
Nur weil das Verständnisproblem HIER noch nie aufgetaucht ist, heißt das nicht dass es das Verständnisproblem auch wirklich nicht gibt.

Ich nehme an Ihr habt auch noch nie das Javatutorial auf englisch gelesen. Wie dem auch sei ... mailen werde ich denen bestimmt nichts! Ich schnapp mir stattdessen meinen Baseballschläger und fahre da nachher vorbei. Und dann zu dir, denn dann mein lieber Atze, gibt es kräftig was auf die Glatze! (Weil ich vorhabe mich auch künftig bei Java Probleme [auch, die die eigentlich keine sind] an euch zu wenden habe ich hier bewusst auf Sätze mit dem Wort Fratze verzichtet ...)

Egal, ich danke euch trotzdem für die nette Unterhaltung. Auch dir Atze ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
W Abarbeitungsreihenfolge Anonyme Klassen Java Basics - Anfänger-Themen 2
O Anonyme Klasse einer Liste erstellen Java Basics - Anfänger-Themen 7
L Anonyme Methode in einer ForEach-Schleife Java Basics - Anfänger-Themen 2
B Klassen Anonyme innere Klasse Java Basics - Anfänger-Themen 4
M Anonyme Klasse und lokale Variable Java Basics - Anfänger-Themen 2
J Anonyme Klasse Java Basics - Anfänger-Themen 5
J List als anonyme Klasse Java Basics - Anfänger-Themen 9
G static Klasse / anonyme Klasse Java Basics - Anfänger-Themen 4
J Wozu werden die anonyme Klassen verwendet? Java Basics - Anfänger-Themen 9
D Unterschied innere Klasse/ anonyme innere Klasse Java Basics - Anfänger-Themen 7
C Anonyme Objekte und mehr Java Basics - Anfänger-Themen 46
B Anonyme Klassen Java Basics - Anfänger-Themen 5
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
J Meine Mails gehen nicht raus Java Basics - Anfänger-Themen 8
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
S Ist JDK jetzt free oder nicht? Java Basics - Anfänger-Themen 5
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
B Dekorator Muster - Irgendwas stimmt hier doch nicht? Java Basics - Anfänger-Themen 4
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben