Wie kann man das einfach lösen? (dynamisch viele Attribute)

oldshoe

Bekanntes Mitglied
Hallo,
ich habe eine Klasse mit mehreren Attributen vom Typ String und hätte gern eine einfache "get"-Methode um diese Attribute auslesen zu können. Aber die Anzahl der Attribute ist dynamisch, daher möchte ich anstatt für 5 Attribute 5 getter zu schreiben dies lieber durch Übergabe des Variablennamens realisieren. Kann man das wirklich nur über mehrere if-Anweisungen lösen wie im BeispielCode angedeutet?

Java:
	private String mobilePhone;
	private String printer;
	private String headphone;
	private String mouse;
	private String tv;
          
        public String getAttributeByName(String attributeName){
             String returnValue="";
             if(attributeName.equals(mobilePhone) ) returnValue=mobilePhone
                   else.....

             return returnValue;

           }
 
Zuletzt bearbeitet von einem Moderator:
Hmm...OK wenn ich dann eine Map mit den Attributen habe,frage ich einfach mit if (containsKey(attributeName)) ab. Aber gibt es ein einfache Möglichkeit alle Variablen automatisch in die Map zu putten oder muss ich auch wieder für jede myHashMap.put(Attribut) durchführen?
 
Wenn du da nicht [c]set(String name, String value)[/c] sondern z.B. [c]setMobilePhone(String value)[/c] hast, musst du da natürlich von Hand ein [c]valueMap.put("mobilePhone", value);[/c] machen.
Du musst kein [c]if (valueMap.contains(key))[/c] machen, das gibt (siehe API) [c]null[/c] zurück, wenn der Key inexistent ist.
 
Hmmm...set gibts garnicht da die Variablen mittels yaml initialisiert werden.
OK dann bleibt mir nichts anderes übrig, als das manuelle putten.

Dank

PS: Stimmt, man muss kein if (valueMap.contains(key)) machen. Gut zu wissen, danke.
 
ArrayList mit Objekten?

ArrayList<Mobile> liste = new ArrayList<Mobile>();

Mobile neuesMobile = new Mobile(werte);

liste.add(mobile);

....

for(Mobile tempMobile: liste)
{
// ....
}

Flexibel, kann alles speichern, setter und getter werden in der Klasse Mobile gespeichert usw.
 

Zurück
Oben