Allgemeines Problem mit Klassen

Joob

Top Contributor
Ich würde gerne eine allgemeine Klasse programmieren, welche von verschiedenen anderen Klassen aufgerufen wird.

In dieser allgemeinen Klasse muss ich aber eine Methode der aufrufenden Klasse ausführen.

Konkret geht es um das Scrollen im TableView, welches ich in allen Controllern mit TableView verwende.
Im Rahmen des Scrollens werden aber Daten neu geladen, logischerweise immer andere, wenn ich es mit verschiedenen Controllern verwende.
Deshalb würde ich gerne die Methode zum Laden der Daten aus dem jeweiligen aufrufenden Controller verwenden.
Ich kann das Controllerobjekt aber nicht einfach so an die Scrollklasse geben, denn die will ja genau wissen von welcher Klasse das Object
kommt und dann bin ich wieder so weit wie vorher und kann das Scrollen auch als Methode in jedem Controller belassen.

Ich würde ja gerne Code mitschicken, aber alles was ich mache ist Quatsch.
Ich wollte schon ein Object mitgeben und per instance prüfen woher das kommt,
allerdings führt das ja auch zu nichts und wieder ist die Methode das Mittel der Wahl.

Mir wäre schon mit einem allgemeinen Hinweis auf den Weg geholfen. Ich dreh mich im Kreis.
 
Wenn Du eine Klasse X hast, und die soll etwas aus Klassen C1, C2, C3, ... aufrufen können, dann gibt es viele Wege:
a) C1, C2, C3, ... implementieren ein Interface I, welches die aufzurufende Methode enthält. Dann kann eine Instanz von C1, C2, ... als Parameter I mit übergeben werden und X kann dann die Methode aufrufen.
b) Eigentlich wie a) nur eben arbeitest Du einfach mit Methodenreferenzen. Dann kann die Methode unterschiedlich heißen und so ... C1, C2, ... implementieren das Interface dann auch nicht mehr ...

Das wären einfach einmal zwei schnelle Ideen, wie sowas umgesetzt werden könnte ...
 
Danke, das ist eines meiner vielen Defizite
Ich habe die Interfaces bislang nicht verwendet.
Gute Gelegenheit.

Für mich war es erst mal wichtig zu hören wie das so gehen könnte.
Dann probier ich mal.
 
Hallo,
ich wollte mich noch mal melden.
Endlich hab ich die Interfaces einsetzen können.
Alles was ich bislang dazu gelesen hatte war für mich nicht sonderlich gut zu gebrauchen.

Also es hat geklappt und ist super.
Ich muss aber jetzt ganz viel ändern, deshalb hat auch die Rückmeldung so lang gedauert.
 
Wenn Du eine Klasse X hast, und die soll etwas aus Klassen C1, C2, C3, ... aufrufen können, dann gibt es viele Wege:
a) C1, C2, C3, ... implementieren ein Interface I, welches die aufzurufende Methode enthält. Dann kann eine Instanz von C1, C2, ... als Parameter I mit übergeben werden und X kann dann die Methode aufrufen.
b) Eigentlich wie a) nur eben arbeitest Du einfach mit Methodenreferenzen. Dann kann die Methode unterschiedlich heißen und so ... C1, C2, ... implementieren das Interface dann auch nicht mehr ...

Das wären einfach einmal zwei schnelle Ideen, wie sowas umgesetzt werden könnte ...
Hallo,
ich wollte mich noch mal melden.
Endlich hab ich die Interfaces einsetzen können.
Alles was ich bislang dazu gelesen hatte war für mich nicht sonderlich gut zu gebrauchen.

Also es hat geklappt und ist super.
Ich muss aber jetzt ganz viel ändern, deshalb hat auch die Rückmeldung so lang gedauert.
 
Du kannst natürlich auch der betreffenden Methode das Übergeben, was sie zum Arbeiten benötigt.
Java:
public void doSomethingWithMyObject(MyObject mo) {
    // Code
    mo.callMethodOfObject();
    // mehr Code
}

// Wenn die aufrufende Klasse vom Typ MyObject ist dann kann sie

doSomethingWithMyObject(this); // Übergibt eine Referenz auf sich selbst (= die aufrufende Klasse)

Anstatt eine Parametertypen von "MyObject" kann natürlich auch ein Interface stehen, dass dann von der aufrufenden Klasse implementiert werden muss.
 

Neue Themen


Zurück
Oben