Reihenfolge im Konstruktor der Objekte

REC

Bekanntes Mitglied
Hallo zusammen,habe hier bei mir was gesehen was ein bisschen komisch ist.
Wollte daher mal fragen was richtig ist.

Bis jetzt habe ich die Arrays gleich am Anfang vom Konstruktorrumpf gemacht.
Da ich gleich ein Objekt erstellte und dies dann in den Array "reinmachte"

Ohne zu überlegen habe ich das auch mit einem JTextField Array gemacht. Also

Java:
        //Array 
        felder = new MyJTextField[13];
        felder[0] = einerFeld;
        felder[1] = zweierFeld;

Doch diese Felder erstelle ich erst nach dem Array.Die Folge ist, das ich keine Objekte in der Array habe.Ok damit es funktioniert habe ich diese Array zu unterst gemacht,nun klappt es.
Meine Frage nun,sollte man die Arrays immer am Schluss anfügen?Oder anders gesagt das erste was man im, Konstruktor macht ist Objekte zu erstellen?Damit man genau solche nullpoint fehler umgeht?
 

Haave

Top Contributor
Ich bin noch nicht so erfahren im Programmieren, aber meine bisherige Feststellung (insbesondere bei GUI-Programmierung) ist, dass man am besten vom Kleinen ins Große und vom Inneren zum Äußeren geht.
Beispielsweise erst den JButton, den ich haben will, initialisieren, dann das JPanel, danach den JFrame. Anschließend den Button dem Panel und das Panel dem Frame hinzufügen. In deinem Beispiel wäre ja das Array die übergeordnete Instanz, darum würde ich es auch erst nach Initialisierung der benötigten Felder erstellen.
 

JavaKnight

Mitglied
Bitte einmal Quelltext posten

Auf dem Array werden ja nicht wirklich die Objekte gespeichert sondern nur Referenzen auf die eigentlichen Objekte!

Das heißt wenn diese nicht initialisiert wurden also null sind, dann hast du halt null Objekte

Aber wie gesagt bitte einmal gesamten Quelltext!
 
T

Tomate_Salat

Gast
[...] (insbesondere bei GUI-Programmierung) [...] Beispielsweise erst den JButton, den ich haben will, initialisieren, dann das JPanel, danach den JFrame. Anschließend den Button dem Panel und das Panel dem Frame hinzufügen. .

Da wirst du z.B. mit SWT Probleme haben das umzusetzen. Denn da läuft es genau anderstherum:

Java:
Composite c = new MyComposite(shell, SWT.NONE);
Button b = new Button(c, SWT.NONE);

Auch in Swing würde ich von "außen nach innen" gehen. Erst den JFrame, dann JPanel, dann JButton
 

The_S

Top Contributor
Variablen, die in der kompletten Methode (oder Konstruktor) gebraucht werden, immer am Anfang deklarieren und nach Möglichkeit initialisieren. Geht in deinem Fall nicht, deshalb nur deklarieren.

Also bspw.

Java:
DeinKonstruktor() {
Object [] f = new Object [13]; // Deklarieren
Object a = new Object();
Object b = new Object();
// ...
f[0] = a; // Initialisieren
f[1] = b; 
// ...

oder

Java:
DeinKonstruktor() {
Object a = new Object();  // Deklarieren
Object b = new Object();
// ... Hier stehen nur weitere Deklarationen + ggf. Initialisierungen in der selben Zeile
Object [] f = new Object [13];
f[0] = a; // Initialisieren
f[1] = b; 
// ...

oder

Java:
DeinKonstruktor() {
Object [] f = new Object [13];
f[0] = new Object(); // Initialisieren
f[1] = new Object(); 
// ...

oder

...

Solang du nicht irgendwo Deklarationen gefolgt von Logik gefolgt von weiteren Deklarationen hast, ist das alles ok. Auch würde ich nicht unbedingt so etwas machen:


Java:
DeinKonstruktor() {
Object a = new Object();  // Deklarieren
Object [] f = new Object [13];
Object b = new Object();
// ...
f[0] = a; // Initialisieren
f[1] = b; 
// ...
 

Haave

Top Contributor
[...] (insbesondere bei GUI-Programmierung) [...] Beispielsweise erst den JButton, den ich haben will, initialisieren, dann das JPanel, danach den JFrame. Anschließend den Button dem Panel und das Panel dem Frame hinzufügen.
Da wirst du z.B. mit SWT Probleme haben das umzusetzen. Denn da läuft es genau anderstherum:

Java:
Composite c = new MyComposite(shell, SWT.NONE);
Button b = new Button(c, SWT.NONE);
Mit SWT habe ich noch nie gearbeitet, aber soweit ich das von deinem Codebeispiel beurteilen kann, muss beim Konstruktoraufruf vom Button der Container (hier Composite) bereits bekannt sein. Wenn das so ist, hat man natürlich keine Wahl und muss erst das übergeordnete Ding erstellen.
Mein Beispiel bezog sich jedoch auf einen Code wie diesen:
Java:
JButton button = new JButton("Hallo!");
//noch mehr Buttons und Kram, der ins Panel soll
JPanel panel = new JPanel();
panel.add(button);
//panel.add(noch mehr Kram);
JFrame frame = new JFrame("Dolles Fenster");
frame.add(panel);
Hab's mir halt übersichtlicher vorgestellt, wenn ich die einzelnen Teile erst dann erstelle, wenn ich sie auch wirklich brauche, und nicht am Anfang des GUI-Codes erst mal einen JFrame und mehrere Panels hinhaue, mich dann mit dem Erstellen von Buttons und ganz anderen Sachen beschäftige und erst am Schluss auf die Panels und den Frame zurückkomme. Ist vielleicht einfach auch Geschmackssache.
 

The_S

Top Contributor
Java:
JButton button = new JButton("Hallo!");
//noch mehr Buttons und Kram, der ins Panel soll
JPanel panel = new JPanel();
panel.add(button);
//panel.add(noch mehr Kram);
JFrame frame = new JFrame("Dolles Fenster");
frame.add(panel);

Das ist bäh. Alle in einem Gültigkeitsbereich benötigte Variablen sollten direkt am Anfang dieses Gültigkeitsbereichs deklariert und asap initialisiert werden. Alles andere ist unübersichtlich und erschwert die Suche nach dem "Ursprung" einer Variablen.
 
T

Tomate_Salat

Gast
@Haave: Jup bei SWT muss das parent-objekt bereits initalisiert sein. Ich würde auch von deiner Arbeitsweise abraten. Wenn du eine GUI baust, solltest du ungefähr wissen, wie diese später aussehen soll, insofern sollte es auch kein Problem sein, mit dem JFrame anzufangen und darauf alles zu setzen. Zudem würde ich auch, wie The_S geschrieben hat, meine Variablen früh definieren.
 
Zuletzt bearbeitet von einem Moderator:

Haave

Top Contributor
Okay, ich behalte im Hinterkopf, was ihr geschrieben habt, und mach einfach mal meine eigenen Erfahrungen ^^ (Hab bislang nie besonders umfangreichen GUI-Code geschrieben, deshalb war es nie wirklich unübersichtlich.)

Jetzt will ich aber nicht den Thread an mich reißen, sondern lieber den Fragesteller zu Wort kommen lassen.
 
Zuletzt bearbeitet:

The_S

Top Contributor
Okay, ich behalte im Hinterkopf, was ihr geschrieben habt, und mach einfach mal meine eigenen Erfahrungen ^^ (Hab bislang nie besonders umfangreichen GUI-Code geschrieben, deshalb war es nie wirklich unübersichtlich.)

Geht nicht um GUI-Code sondern allgemein. Und dass du dich darin später wieder zurecht findest, stellt auch niemand in Frage, wenn du alle Projekte so aufbaust. Auch ist es bei dem konkreten Beispiel hier nicht sooooooooo dramatisch. Aber ein Außenstehender, der deinen Code (bspw. einen etwas komplexeren Algorithmus) lesen muss, wo kreuz und quer neue Variablen deklariert werden, wird sich wohl schwerer tun.

Jetzt will ich aber nicht den Thread an mich reißen, sondern lieber den Fragesteller zu Wort kommen lassen.

Darf doch jeder Fragen und gehört ja zum Thema :)

@Tomate_Salat

Als Klassenvariablen???
 
T

Tomate_Salat

Gast
@The_S:
Ouh, ja jz seh ich was ich da gestern geschrieben habe. Ich editier das mal besser wieder raus
 

REC

Bekanntes Mitglied
He danke für eure zahlreiche und gute Antworten:D
Meine Frage ist mehr als beantwortet :toll:

Aber ich kann mich diese GUI Fragen auch anschliessen sind gerade auch interessant.
Auch wegen der Reihenfolge.Klar all jene Elemente welche ich brauche deklariere ich im Datenfeld

Java:
//Datenfeld
private JFrame a;
private JPanel b;
private JButton knopf;

Dann erzeuge ich Objekte davon im Konstruktor
Java:
//Konstruktor
a = new JFrame();
b = new JPanel();
knopf = new knopf();

Dann in der Methode paint,ist eben jetzt die Frage der Reihenfolge.
In der Schule wurde uns gesagt man soll von oben nach unten machen.Also
knopf ,b,a.
Aber ich finde es besser wenn ich von hinten beginne.Zuerst das a dann b dann der Knopf.

Noch eine 2Frage.
Die meisten Komponeten kann man ja einstellen.Ist diese Reihenfolge richtig?
Also wenn ich mit einer Komponente anfange stelle ich gleich alles ein bevor ich zur nächste gehe?
Java:
public void paint() {

        mainFrame.setSize(550, 500);
        mainFrame.setResizable(false);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        mainFrame.setBackground(Color.black);

        // Der Würfel Panel
        würfelPanel.setLayout(new FlowLayout());
        würfelPanel.setBackground(Color.BLACK);

        // knopfPanel
        knopfPanel.setLayout(new FlowLayout());
	knopfPanel.setBackground(Color.black);
	knopfPanel.add(knopf);
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
I Array in umgekehrter Reihenfolge - Erklärung - Java Basics - Anfänger-Themen 3
R Werte und Reihenfolge in 2d Arrays vergleichen Java Basics - Anfänger-Themen 5
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
M Feste Reihenfolge von dem Ablauf von Methoden Java Basics - Anfänger-Themen 7
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
L Richtige Reihenfolge der Dateien Java Basics - Anfänger-Themen 5
C Werte im Vector in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 14
C Vector-Inhalt in zufällige Reihenfolge bringen Java Basics - Anfänger-Themen 6
A String in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 7
L Reihenfolge Ausgabe Java Basics - Anfänger-Themen 5
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
D TAB Reihenfolge im JSinner Java Basics - Anfänger-Themen 1
RowdyN Methoden Befehle in zufälliger Reihenfolge ausführen lassen Java Basics - Anfänger-Themen 5
B Arrays in Reihenfolge vertauschen Java Basics - Anfänger-Themen 6
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
M Array Reihenfolge umdrehen Java Basics - Anfänger-Themen 9
J Klassen Reihenfolge beim Aufruf von Klassen Java Basics - Anfänger-Themen 1
L zweidimensionales char array reihenfolge ändern ? Java Basics - Anfänger-Themen 2
S Warum muss ich die operationen mit AffineTransform in umgekehrter Reihenfolge ausfuehren..? Java Basics - Anfänger-Themen 4
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
M Ausgabe in falscher Reihenfolge Java Basics - Anfänger-Themen 7
S Vokal Reihenfolge Java Basics - Anfänger-Themen 1
C if Reihenfolge Java Basics - Anfänger-Themen 2
W String von hinten alle drei Zeichen abschneiden und in umgekehrter Reihenfolge ausgeben. Java Basics - Anfänger-Themen 9
F Reihenfolge des Quelltexts Java Basics - Anfänger-Themen 6
S Jede Reihenfolge einer zufällig langen Liste ausprobieren Java Basics - Anfänger-Themen 3
B AffineTransform - Reihenfolge der Operationen Java Basics - Anfänger-Themen 3
B Methoden Logische Reihenfolge in Programmen? Java Basics - Anfänger-Themen 4
D Problem mit Initialisierung und Reihenfolge Java Basics - Anfänger-Themen 10
O Zwingende Reihenfolge von Methoden Java Basics - Anfänger-Themen 33
P Vereinfachte for-Schleife wird in umgekehrter Reihenfolge ausgewertet Java Basics - Anfänger-Themen 7
X Collections Reihenfolge bestimmter Objekte in einer ArrayList verändern Java Basics - Anfänger-Themen 2
S Buttons übereinander legen - Reihenfolge Java Basics - Anfänger-Themen 2
G Zahlen in zufälliger Reihenfolge ausgeben/speichern. Java Basics - Anfänger-Themen 2
L Properties Reihenfolge vorgeben Java Basics - Anfänger-Themen 13
N Reihenfolge von Methoden Java Basics - Anfänger-Themen 5
F Reihenfolge in der Events abgearbeitet werden Java Basics - Anfänger-Themen 2
A Wörter umgekehrten Reihenfolge ausgeben Java Basics - Anfänger-Themen 3
A Reihenfolge bei equals() Java Basics - Anfänger-Themen 2
K Reihenfolge Modifikatoren Java Basics - Anfänger-Themen 6
U Zuweisungen - Reihenfolge Java Basics - Anfänger-Themen 9
S Falsche Reihenfolge von Methodenaufrufen Java Basics - Anfänger-Themen 8
G Array Reihenfolge ändern Java Basics - Anfänger-Themen 6
M Reihenfolge von Objekten im Vektor Java Basics - Anfänger-Themen 3
A Liste von Listen mit fester reihenfolge Java Basics - Anfänger-Themen 6
P Frage zu OO (Reihenfolge der Klassen) Java Basics - Anfänger-Themen 2
G Feld in umgekehrter Reihenfolge an zweites Feld übergeben Java Basics - Anfänger-Themen 5
T Reihenfolge von Strings prüfen Java Basics - Anfänger-Themen 3
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
K Array umgedrehte Reihenfolge Java Basics - Anfänger-Themen 2
M String Reihenfolge umkehren Java Basics - Anfänger-Themen 2
M Array anders sortieren, aber die Reihenfolge beibehalten Java Basics - Anfänger-Themen 4
V Reihenfolge von Befehlen - hier repaint() zu spät Java Basics - Anfänger-Themen 13
N Zahlen einlesen und in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 5
D Array in umgekehrter Reihenfolge Java Basics - Anfänger-Themen 4
A Reihenfolge erfassen Java Basics - Anfänger-Themen 11
A String Zeichen löschen in einer bestimmten Reihenfolge Java Basics - Anfänger-Themen 25
G Zahlen in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 6
A Exception Reihenfolge Java Basics - Anfänger-Themen 3
M Sorry,ne blöde Frage Focus setzen und Focus Reihenfolge Java Basics - Anfänger-Themen 15
L Reihenfolge der Methodenaufrufe Java Basics - Anfänger-Themen 6
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben