Name eines komischen Klassenkonstruktes

Status
Nicht offen für weitere Antworten.
B

Beni

Gast
Hallo zusammen

Ich hab im Forum einen Code gesehen, der etwa so aussieht:

Code:
public void doSomething(){
  class Test extends XYZ{
    public Test(){
    }
    public String toString(){
      return "kleiner Test";
    }
  }

  Test test = new Test();
  System.out.println( test.toString() );
}

So, wie nennt man "Test"? Irgendwie passt "anonyme Klasse" nicht, sie hat ja einen Namen.

Eine Methodenklasse? ???:L

mfg Beni
 
R

Roar

Gast
L-ectron-X hat gesagt.:
Ich würde sagen: Innere Klasse.
Dieses Konzept wird glaube ich seit Java 1.1 unterstützt.
ja, aber die klasse ist ja in einer methode drin. geht sowas überhaupt?
also ich habs noch nicht gesehen...
 
G

Guest

Gast
Du kannst Klassen an beliebigen Orten definieren, auch in Methoden.
 
B

Beni

Gast
@Roar
Das war hier versteckt:
http://www.java-forum.org/de/viewtopic.php?t=4449
Und es funktioniert auch tatsächlich.

@L-ectron-X
Unter einer inneren Klasse verstehe ich eine Klasse, die innerhalb einer Klasse definiert wird:
Code:
public class Outer{
  public class Inner{
  }
}
Vielleicht ist der Begriff nicht so klar definiert, aber ich bin skeptisch.

Im WWW hab ich auch noch nicht allzuviel gefunden.

mfg Beni
 

L-ectron-X

Gesperrter Benutzer
Eine innere Klasse wird innerhalb eines Klassenkörpers/Klassenrumpfes definiert. Eine lokale Klasse innerhalb einer Methode. Eine lokale Klasse wird somit nur zur Ausführungszeit der Methode "leben" in der sie definiert ist, eine innere Klasse existiert dagegen mit Instanziierung der sie umgebenen Klasse.
 

nollario

Bekanntes Mitglied
die java spec liefert da auch dieselbe antwort:

This chapter discusses the common semantics of all classes-top level (§7.6) and nested (including member classes (§8.5, §9.5), local classes (§14.3) and anonymous classes (§15.9.5)). Details that are specific to particular kinds of classes are discussed in the sections dedicated to these constructs.

später gibt es zu den namen folgende erklärungen:

.... A member class is a class whose declaration is directly enclosed in another class or interface declaration. ...
... A local class is a nested class (§8 ) that is not a member of any class and that has a name.
...An anonymous class declaration is automatically derived from a class instance creation expression by the compiler.
An anonymous class is never abstract (§8.1.1.1). An anonymous class is always an inner class (§8.1.2); it is never static (§8.1.1, §8.5.2). An anonymous class is always implicitly final (§8.1.1.2).

wobei anonymous class für innere klasse steht... (denk ich ma)

zur näheren beschreibung:

http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#246214

saludos

christian
 
B

Beni

Gast
Ich denke, jetzt ist klar, wie das ganze funktioniert:

Lokale Klasse (ist eine innere Klasse):
Code:
public void doSomething(){
  class Test extends XYZ{
    public Test(){
    }
  }

  Test test = new Test();
}

Anonyme Klasse (ist eine innere Klasse):
Code:
public void doSomething(){
  Thread thread = new Thread( new Runnable(){
    public void run(){
    }
  });
}

normale Innere Klasse
Code:
public class Out{
  private class In{
  }
}

mfg Beni
 

Illuvatar

Top Contributor
Ergänzung: Ich habe in der Fehlerliste von Javabuch.de das hier gefunden (immer mal interessant, durchzulesen :) ):

In den verschiedenen Abschnitten des Buchs, die sich mit lokalen und anonymen Klassen beschäftigen (insbesondere 10.1 und 28.2.2), werden die einschlägigen Begriffe nicht vollkommen konsistent zur Java-Sprachspezifikation gebraucht. Ihre richtige Verwendung ist wie folgt:

Eine Klasse, die innerhalb einer anderen Klasse definiert wurde und nicht das Attribut "static" trägt, wird als Innere Klasse bezeichnet.
Eine Innere Klasse, die keinen expliziten Namen hat, wird als Anonyme Klasse bezeichnet - egal ob sie in der Klasse oder in einer Methode definiert wurde.
Eine Innere Klasse, die einen Namen hat und innerhalb einer Methode definiert wurde, wird als Lokale Klasse bezeichnet.
Eine Innere Klasse, die einen Namen trägt und in einer Klasse (also außerhalb einer Methode) definiert wurde, heißt Nichtstatische Memberklasse.
Eine Klasse, die innerhalb einer anderen Klasse definiert wurde und das Attribut "static" trägt, heißt Statische Memberklasse.
Innere Klassen sind also all die Klassen, die einen impliziten Verweis auf die äußere Klasse mitführen und die auf Member-Variablen der äußeren Klasse zugreifen können. Eine innerhalb einer anderen Klasse definierte Klasse, die das Attribut "static" trägt, ist also keine Innere Klasse.
 
B

bygones

Gast
werden nicht auch so die Iteratoren gemacht ?!

Aus dem Javabuch:
Code:
/* Listing1011.java */

interface StringIterator
{
  public boolean hasNext();
  public String next();
}

class StringArray
{
  String[] data;

  public StringArray(String[] data)
  {
    this.data = data;
  }

  public StringIterator getElements()
  {
    return new StringIterator()
    {
      int index = 0;
      public boolean hasNext()
      {
        return index < data.length;
      }
      public String next()
      {
        return data[index++];
      }
    };
  }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Name eines Nicht-String Objekts ausgeben Allgemeine Java-Themen 4
J Name eines Strings durch einen String festlegbar? Allgemeine Java-Themen 2
O String übergeben ist name eines JTextField wie zugreifen Allgemeine Java-Themen 9
G Name des aktuellen Programms Allgemeine Java-Themen 7
L Ist ein string ein erlaubter variabel name? Allgemeine Java-Themen 2
S Variable als Objekt Name Allgemeine Java-Themen 3
J Apache POI - No external workbook with name Allgemeine Java-Themen 5
Neumi5694 Task-Name unter Windows Allgemeine Java-Themen 4
1 Name Generator für Videos Allgemeine Java-Themen 1
E Webservice zur Konvertierung IBAN/BIC -> Bank Name Allgemeine Java-Themen 1
P Name der Parent Klasse abfragen Allgemeine Java-Themen 8
S Name einer Musikdatei auslesen und ändern Allgemeine Java-Themen 8
J IMDB Name und Bewertung auslesen Allgemeine Java-Themen 10
J .txt erstellen, nach name der vorhergehenden txt Allgemeine Java-Themen 7
J Suche: Tool zum Auffinden gleichnamiger Klassen (Name und Package gleich) in unteschiedlichen JARs Allgemeine Java-Themen 5
P ActionListener / Label Name auslesen Allgemeine Java-Themen 2
S java -jar name.war. Wie Extraktionspfad umbiegen? Allgemeine Java-Themen 2
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
D Passende Name für Methoden finden Allgemeine Java-Themen 3
Dit_ Registry, Preferences | Name des Knotens ändern. Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
E Variablen anderer Klassen auslesen (nur Name bekannt) Allgemeine Java-Themen 4
S Konstrukt Sinn, Zewck und Name Allgemeine Java-Themen 6
Ark Name für Funktion gesucht Allgemeine Java-Themen 5
D variabler Listen name Allgemeine Java-Themen 3
M Name der Swing Komponente Allgemeine Java-Themen 3
C Name einlesen und Programm starten Allgemeine Java-Themen 2
S "Guessed User name" bei Tomcat belegen Allgemeine Java-Themen 2
M Name von Wochentagen vergleichen Allgemeine Java-Themen 3
M Zugriff auf Objekt, Name in Variable Allgemeine Java-Themen 3
F Welcher Name? paintsXY(), isPaintXY(), isPaintingXY() . Allgemeine Java-Themen 4
V Objekt einer Klasse, deren Name nur als String vorhanden Allgemeine Java-Themen 4
D Name der Java-Applikation Allgemeine Java-Themen 2
A Class File zur Laufzeit laden ohne den Binary Name zu kennen Allgemeine Java-Themen 11
G jar-Name einer Klasse Allgemeine Java-Themen 9
S Name der ausführenden jar-Datei abfragen Allgemeine Java-Themen 11
Y fehler: wrong name serverA Allgemeine Java-Themen 3
F Parameter Name herausfinden Allgemeine Java-Themen 25
H Package name aus Class-File auslesen Allgemeine Java-Themen 11
P Duplicate name in Manifest Allgemeine Java-Themen 6
J Name des aktuell aktiven Windows-Fensters abfragen? Allgemeine Java-Themen 4
T JUSB - Name des USB Endgerätes zurückgeben Allgemeine Java-Themen 2
L Systeminformationen (PC-Name und Kennwort) auslesen Allgemeine Java-Themen 9
S Sortierung einer Collection nach dem Attribut "name&quo Allgemeine Java-Themen 3
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben