Hey, ich habe eine Frage zum Aufruf einer Java Funktion:
Java:
classKlasse1(){Klasse2 klasse2 =newKlasse2();publicvoidmachIrgendwas(){}}classKlasse2(){// Wie kann ich hier die Funktion machIrgendwas aurufen, ohne dass ich der Funktion (this) übergebe und this.machirgendwas() aufrufe? }
Ich hab auch schon einige Beiträge durchsucht, mein Problem ist dass ich nicht weiß, unter welchem Stichpunkt ich Lösungen finde
danke für die Antwort, leider ist es glaub nicht die gesuchte Lösung. Ich hol mal ein bisschen weiter aus.
Ich habe eine Klasse Bank, welche die Funktion verzinsen() hat, die Bank erstellt im Konstruktor das Objekt Zeitgeber. Der Zeitgeber ist eine simuliert laufende Uhr.
Im Zeitgeber gibt es eine Bedingung, dass jedesmal wenn der 1. eines Monats ist, die Funktion verzinsen() aus der Bank klasse ausgeführt werden soll
@Mutterklasse
ohne irgendwas als Parameter gehts nicht, Callback ist ja auch Irgendwas,
z.B. ein eher allgemeiner Listener, dann muss Bank dieses Interface implementieren
100 Prozentig Probier es doch aus... Die methode is ja schließlich nicht definiert für die Klasse . Und mein Compiler meckert...
@ Themenstarter:
Du kannst es wie SlaterB sagt über den Konstruktor machen oder später über einen Setter... Grundsätzlich kannst du auch die Klasse Bank Singleton machen, macht aber wenig Sinn...
Andere möglichkeiten wären ggf. denkbar, da würde ich mir aber 3x überlegen ob ich nicht doch lieber das mit dem Konstruktor nehme (was ich dir auch empfehlen würde...)
Wie würde das mit dem Callback funktionieren? Die Bank darf das Interface implementieren, ich will nur der Classe des Zeitgebers keine parameter übergeben, weil ich die Instance öfter aufrufe
in Zeile 13 schreibst du
this.setSize(SIZE_X, SIZE_Y);
nicht
super.setSize(SIZE_X, SIZE_Y);
obwohl setSize() doch offensichtlich eine Methode der Superklasse Applet oder noch höher ist
@Mutterklasse
wie von Aldimann diesmal vorgeschlagen ginge auch nach Aufruf der statischen Methode noch
ein addListener(this); per Methode, so können auch mehrere Listenener geaddet werden wenn Zeitgeber eine Liste verwaltet,
die Bank würde ansonsten eh darauf achten das nur einmal aufzurufen
@Mutterklasse
wie von Aldimann diesmal vorgeschlagen ginge auch nach Aufruf der statischen Methode noch
ein addListener(this); per Methode, so können auch mehrere Listenener geaddet werden wenn Zeitgeber eine Liste verwaltet,
die Bank würde ansonsten eh darauf achten das nur einmal aufzurufen