Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine peinliche Frage. Ich arbeite zzt an einem Projekt, bei dem ich relativ viele Objekte einer Klasse habe. Ich würde jetzt gerne von jedem Objekt ein Attribut in ein Array übertragen. habe ich nur die Möglichkeit, jedes Objekt einzeln über den Namen anzusprechen und die getter-Methode aufzurufen? am liebsten würde ich das ganze in einer for - Schleife verpacken. ich hatte die Idee, dass ich jedem Objekt ein Attribut gebe, über welches ich es dann ansprechen kann. (also so eine art ID). mein eigentliches Problem ist es also, dass ich es nicht schaffe, mehreren Objekte nacheinander ein Attribut abzufragen, ohne für jedes Objekt eine eigene Zeile zu schreiben.
public void Speichern(){
int[] gSpeichert = new int[60];
for(int i=0;i<60;i++){
gSpeichert[i-1]=LED
}
}
meine LED klasse sieht so aus :
Java:
public class LED extends Kreis
{
private int ID;
private int status;
LED(int id,int st){
ID=id;
status = st;
}
public void statusSetzen(int i){
status = i;
switch(status){
case 0:
this.setzeFarbe("hellgrau");
break;
case 1:
this.setzeFarbe("orange");
break;
case 2:
this.setzeFarbe("blau");
break;
}
}
public void statusAendern(){
switch(status){
case 0 :
status++;
this.setzeFarbe("orange");
break;
case 1:
status++;
this.setzeFarbe("blau");
break;
case 2:
status = 0;
this.setzeFarbe("hellgrau");
break;
}
}
public int gibStatus(){return status;}
}
soviel hab ich bis jetzt. ich hab dann aufgehört zu versuchen eine LED nach der anderen anzusprechen, weil ich keine Idee mehr hatte, aber meine alternative wäre dann
Java:
public void Speichern(){
int[] gSpeichert = new int[60];
int[0] = LED1.statusGeben();
int[1] = Led2.statusGeben();
}
Also wenn Du mehrere LEDs hast, dann musst Du die ja vorhalten. Viele einzelne Variablen a.la. var1, var2, var3, ... sind immer unschön und so Code schreit direkt nach Arrays oder eben den vorhandenen Collections. Also könntest Du ein LED leds[] = new LED[60](); und dieses Array dann füllen. Dann wäre die Schleife relativ einfach a.la. for (int i = 0; i<60; i++) gSpeichert = leds.statusGeben();
Und wichtig: Wenn du ein Array gSpeichert vom Typ int[60] hast, dann sprichst Du das mit gSpeichert[...] und nicht mit int[..] an.
Was natürlich auch eine Möglichkeit wäre dafür eine HashMap anzulegen und dann über deren Methoden die Objekte auszugeben und oder anzupassen.
Das hat eben den Vorteil das du jedem Objekt (als String) was Du in das Array ablegst einen Key (Integer) zuweist den Du frei wählen kannst.
Wesentlich sinnvoller wäre aber LED (oder welches Objekt er da auch immer braucht) als value, und nicht String.
Und key dann entsprechend der Benutzung wählen...
Läuft dann aber wahrscheinlich wieder darauf hinaus, das er jedes Objekt einzeln über Key absprechen würde, ansonsten wäre key äquivalent zum Index von Array/Collection, die aber wesentlich weniger Overhead haben...
Kommt aber auf den Kontext des ganzen an, Map kann durchaus auch Sinnvoll sein, zB wenn er das über Konsole/GUI benutzen will