"Untermethoden" - Methoden in einer Methode

joschu

Mitglied
Hallo,

ich versuche mich gerade in einem großen Projekt zurechtzufinden. Dort gibt es folgendes Konstrukt:

Java:
public class Klasse{
...
     protected void funktion1(){
     ...
          private Objekt1 funktion2(...){
          ...
          }

          public Boolean funktion3(...){
          ...
          }
     ...
     }
...
}

Ich kenne Klassen in Klassen aber Methoden in Methoden habe ich noch nie gesehen. Wie sieht die Ausführung aus? Gibts dafür einen speziellen Namen? Oder hab ich irgendwas übersehen und das gibts eigentlich doch gar nicht.

Gruß
 
methoden in methoden gibt es nicht und wird auch nicht kompilieren.

Sicher dass darum nicht eine anonyme Klasse gepackt ist ?
 
Danke, das wars.
Irgendwo in der schlechten Formatierung und den unübersichtlichen Bezeichnern habe ich die anonyme Klasse gefunden.
Fürs nächste Mal weiß ich Bescheid.
 
Nutzt du Eclipse? Dank Auto-Formatierung mit Strg+Shift+F ist schlechte Formatierung glücklicherweise kein allzu großes Problem mehr...
 
Aber Klassen innerhalb von Methoden geht wie André unterschwellig angemerkt hat 😀

Java:
public class ClassTest {
	public static void main(String[] args) {
		class Foo {
			void foo() {
				System.out.println("Foo!!!");
			}
		}
		
		Foo foo = new Foo();
		foo.foo();
	}
}
 
Ich würde fast schätzen in 99,9% aller Fälle 😀 Hab noch nie Sourcecode gesehen wo etwas wie im obigen Beispiel echt Verwendung gefunden hat *g*
Ich mach das auch ab und an. Wenn ich zwei Instanzen des Listeners/Handlers brauche, oder -- den Fall gibts öfter mal -- einen Listener der eigentlich klein ist aber zwei Interfaces implementieren muss. Das geht anonym ja nicht.

Ebenius
 
Wenn Du's so ausdrückst, ist's falsch. Ich kann das...
Java:
Runnable foo() {
  return new Runnable() {
    public void run() {
      //
    }
  };
}

void bar() {
  foo().run();
}
Das Beispiel verstehe ich nicht. Du hast überhaupt keine Methode definiert (lediglich "run" implementiert). In meinem obigen Link zum "Quick Search" findest du ein Beispiel.
 
Das Beispiel verstehe ich nicht. Du hast überhaupt keine Methode definiert (lediglich "run" implementiert). In meinem obigen Link zum "Quick Search" findest du ein Beispiel.
Was Du gemeint hattest war mir schon klar. Aber Du hast es falsch ausgedrückt. Das Interface [c]Runnable[/c] deklariert eine Methode [c]run()[/c]. Die in [c]foo()[/c] erzeugte Klasse (ob nun anonym oder nicht spielt keine Rolle) definiert eine Methode [c]run()[/c]. Auf die in
Code:
Runnable
deklarierte aber in der anderen Klasse definierte Methode kann man von außen also über das Interface zugreifen.

Siehe dazu den Wikipedia-Artikel zu "Deklaration (Programmierung):
wikipedia::Deklaration (Programmierung) hat gesagt.:
Häufig werden die Begriffe Deklaration und Definition gleichgesetzt. Die Definition ist allerdings ein Sonderfall der Deklaration. Bei Variablen spricht man von Definition, wenn der Compiler Code erzeugt, der entweder statisch (im Datensegment) oder dynamisch (zur Laufzeit) Speicherplatz für diese Variable reserviert. Bei Unterprogrammen spricht man von Definition, wenn an dieser Stelle der Quelltext des Unterprogramms angegeben ist, der vom Compiler übersetzt wird. Die Deklaration eines Unterprogramms ohne Definition wird auch oft als Prototyp bezeichnet.

Nix für ungut. 🙂
Ebenius
 
Da der Gedanke klar ist, versteh ich nicht, wieso du meine Ausdrucksweise bemängelst ???:L (mit Wikipedia könnte ich auch meine Ausdrucksweise belegen).
 

Neue Themen


Zurück
Oben