Wie kann ich zwei Klassen teilen sich die gleiche variable Definitionen
Was ich wirklich brauchen, ist in der Lage zu erklären, reguläre Variablen in einer Schnittstelle und implementieren Sie dieses interface in zwei Klassen, ich würde nicht zu haben, um re-deklarieren Sie diese in jeder Klasse (also Klasse.Daten.Variablen statt Klasse.Variablen). Gibt es eine Möglichkeit, ich könnte das gleiche Ziel erreichen anders?
Geben mehr detail. Im wesentlichen habe ich eine kleine Zeichnung Programm, dass die Tropfen JLabels auf einem JPanel in einem JScrollPane. Weil ich ein bestimmtes design für diese JLabels (dh Sie sind nicht nur für die Zeichnung, die Sie repräsentieren Fluggesellschaft Objekte für diese Anwendung), habe ich eine Klasse, die Sie erweitert JLabel und fügt meine Anwendung bestimmter Variablen. Letztendlich habe ich Lesen und schreiben einer XML-Datei mit diesen Variablen, so können Sie laden und speichern Sie Ihre designs. Da ich nicht verwenden können, diese erweiterte Klasse für meine XML-Definitionen, weil es schreit über die parent-Klasse, obwohl ich sagte es, KEINES zu haben, als die accessor - (ich habe gelesen, dass es einen Fehler), ich habe zum erstellen eine identische Klasse und kopieren Sie die Werte hin und her für speichern und laden. Nicht zu viel von einem problem, außer, wenn ich eine variable hinzufügen, um das JLabel erweitert die Klasse und vergessen Sie auf hinzufügen, um die XML-mimic-Klasse und anschließenden kopieren Routinen.
So, es wäre toll, wenn ich könnte machen eine Klasse (sagen CellDataRecord.java), das zusätzliche Daten-Deklarationen und Klassen verwendet werden, in beiden Orten (JLabel Erweiterung und die XML-Daten), ohne dass so etwas wie XML.Daten.CellDataRecordXXX.
- Was Sie beschreiben, würde man als eine mix-in-und Java nicht haben. Sie haben zu greifen, um ein Muster oder die andere, die Sie bereits mit vertraut sind.
- gleiche problem wie bei mir.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit der Vererbung oder mit einer Schnittstelle, wo die variable als eine Konstante in der übergeordneten Klasse. Da Sie den ausbau eines JLabel, sollten Sie die Schnittstelle implementieren, auf die beiden Klassen:
Bearbeiten
Da Sie in der Lage sein, um die gleichen Variablen aus verschiedenen Klassen, die Sie haben, um sicherzustellen, Sie ändern sich nicht von Kopien und ändern Sie die gleiche variable, so sollten Sie eine
volatile
keyword auf die variable, um anzugeben, auf java, dass alle threads, sollte überprüfen Sie den Wert, bevor Sie es aktualisieren.Nun müssen Sie eine eigene Klasse, so dass Instanzen gemacht werden können von den anderen Klassen ab zu erhalten die Wert. Verwenden Sie die
static
Schlüsselwort, um sicherzustellen, dass eine Kopie aufbewahrt wird, die für alle Instanzen der Klasse.Nun die beiden anderen Klassen nur dazu:
Nun können Sie dies tun:
static
undvolatile
, und dann erstellen Sie Instanzen der Klasse, von der zwei Klassen, die Notwendigkeit der variable. Hier ist ein Beispiel mit einer volatile-variable in java: ilkinbalkanay.blogspot.co.uk/2007/10/...myVariableBlah.updateVariable()
müssen Sie nur wickeln Sie es in einem anderen setter, werde ich auf meine Antwort zu erklären.Ich bin mir nicht sicher, ob ich 100% begreifen Ihr problem, aber von den ersten Zeilen Ihrer Beschreibung, anstatt der Implementierung einer Schnittstelle definieren Sie eine abstrakte Klasse und haben Ihre Klassen erweitern. Auf diese Weise werden Sie in der Lage sein zu definieren Attribute in der abstrakten Klasse und diese wird für alle Unterklassen.
JLabel
, also no go.