Guten Tag liebes Forum,
habe mich heute mal registriert, da ich vor einem Problem stehe und ich nicht so richtig weiter komme. Ich habe eine JavaFX-Anwendung, in der ich mehrere vorgegebene Objekte über ein Menü laden kann.
Nun möchte ich über ein "Neu" Menü ein individualisierbares Objekt erzeugen können mit Hilfe einer Variablen als Parameter.
Sieht vereinfacht in etwa so aus:
Diese Klasse EingabeGraphen liefert mir statische Objekte zurück. g2 und g3 stammen aus der vorhandenen auswahlliste (sind static, damit nicht bei jeder selektion ein neues Objekt erzeugt wird). Den Parameter von g1 soll nun der anwender selbst bestimmen können.
Und genau hier liegt das Problem. Wenn ich in der Test Klasse via EingabeGraphen.setX() mir einen neuen X-Wert setze, wird dieser nicht in dem Objekt g1 gesetzt, sondern der initalwert 0 bleibt stehen.
Kann mir einer erklären, warum das so ist? Liegt es daran, dass die Objekte bereits erzeugt und initialisiert wurden und durch das static quasi final sind?
Ich konnte die Werte nachträglich in der GraphImpl Klasse durch setzen eines setters ändern, dies wollte ich allerdings vermeiden..
Über Hilfe und/oder Lösungsansätze bin ich dankbar
Grüße
Daniel
habe mich heute mal registriert, da ich vor einem Problem stehe und ich nicht so richtig weiter komme. Ich habe eine JavaFX-Anwendung, in der ich mehrere vorgegebene Objekte über ein Menü laden kann.
Nun möchte ich über ein "Neu" Menü ein individualisierbares Objekt erzeugen können mit Hilfe einer Variablen als Parameter.
Sieht vereinfacht in etwa so aus:
Java:
public class EingabeGraphen {
private static int x;
static GraphImpl g1 = new GraphImpl(x);
static GraphImpl g2 = new GraphImpl(10);
static GraphImpl g3 = new GraphImpl(5);
public static void setX(int x) {
EingabeGraphen.x = x;
}
}
Java:
public class GraphImpl {
private int id;
public GraphImpl(int id) {
this.id = id;
}
public void output(){
System.out.println(id);
}
}
Java:
public class Test {
public static void main(String[] args) {
EingabeGraphen.setX(100);
EingabeGraphen.g1.output();
EingabeGraphen.g2.output();
EingabeGraphen.g3.output();
}
}
Java:
Konsolenausgabe:
0
10
5
Diese Klasse EingabeGraphen liefert mir statische Objekte zurück. g2 und g3 stammen aus der vorhandenen auswahlliste (sind static, damit nicht bei jeder selektion ein neues Objekt erzeugt wird). Den Parameter von g1 soll nun der anwender selbst bestimmen können.
Und genau hier liegt das Problem. Wenn ich in der Test Klasse via EingabeGraphen.setX() mir einen neuen X-Wert setze, wird dieser nicht in dem Objekt g1 gesetzt, sondern der initalwert 0 bleibt stehen.
Kann mir einer erklären, warum das so ist? Liegt es daran, dass die Objekte bereits erzeugt und initialisiert wurden und durch das static quasi final sind?
Ich konnte die Werte nachträglich in der GraphImpl Klasse durch setzen eines setters ändern, dies wollte ich allerdings vermeiden..
Über Hilfe und/oder Lösungsansätze bin ich dankbar
Grüße
Daniel