kann man alles mögliche in Obect kapseln?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Die API einer Anwendung stellt mir folgende Methode zur Verfügung:

public java.lang.Object setPropValue(java.lang.String propName, java.lang.Object value)

Sets the property value for the specified property name to the specified value. The specified value is automatically unwrapped to match a primitive type. The previous value returned is wrapped in an object if it has a primitive type.

If the value of the property to be set is invalid, then an IllegalArgumentException is thrown. For String properties, this would happen if a property value is required but the string is empty or null, or if the length exceeds the length of the description for the property. For Boolean properties, the value is invalid if the type of the parameter 'value' is not Boolean, Date properties are illegal if they are outside the range 1753 January 01 AD 00:00:00 GMT and 3000 January 02 AD 00:00:00 GMT. Float and Integer properties are illegal if the 'value' parameter is not a Number object or if the property description has a minimum and maximum value and the value provided is not within that range. Menu properties are illegal if the parameter 'value' is not a String or String array and the value or values provided are not existing choices from the property description for this property.

Die zu setzenden Properties können verschiedene Datentypen sein. Wenn das zu setzenden Propertie z.B vom Typ boolean ist, so bekomme ich mit dem Code unten eine IllegalArgumentException. Leider kann ich zur Laufzeit nicht herausfinden vom welchem Datentyp das zu setzenden Attribut ist. Kann ich nicht alle Arten von Datentypen in ein Objekt der Klasse Object kapseln, so das die Lösung dann allgemeingültig ist (egal welcher Datentyp gerade vorliegt)?

Code:
String attributName = aktuellesDatenTag.getAttributeValue("Name");
String attributWert = aktuellesDatenTag.getText();
		    		
objektPrototype.setPropValue(attributName, attributWert);
 

mikachu

Top Contributor
Anonymous hat gesagt.:
Kann ich nicht alle Arten von Datentypen in ein Objekt der Klasse Object kapseln, so das die Lösung dann allgemeingültig ist (egal welcher Datentyp gerade vorliegt)?

klar

(weißt du, wie ich zu dieser erkenntnis gekommen bin? nein? ich verrats dir: durch probieren! ;))
 
S

SlaterB

Gast
wann kommt die Exception?

beim Aufruf von setPropValue()?
weil du einen String übergibst, aber einen boolean hättest übergeben müssen?
was steht in attributWert drin? wenn "true"/ "false", dann musst du das selber in boolean/ Boolean umwandeln

dzu spontan paar Strategien von mir:
a.) du weißt doch was du aktuell bekommst,
hast irgendwo ein ganzen Berg an Beschreibungsinformationen,
die dir verraten, das GUI-Element 456 für ein boolean-Feld gedacht ist

b.)
oder das Objekt verrät es dir selber
Type t = objektPrototype.getPropType(attributName);
// casten
objektPrototype.setPropValue(attributName, attributWertInCorrectType);

per Reflection objektPrototype analysieren, setPropValue scheint ja selber schon so eine Reflection-Operation zu sein

wie kommt es denn zur Fehlermeldung? irgendjemand muss da doch intern den Typ feststellen und vergleichen,
genau diesen Typ-feststellen-Code musst du klauen/ selber nachbauen,
hast du den Quellcode der Klasse, ist das was aus der API?

c) du analysierst nur den aus dem aktuellesDatenTag-Objekt erhaltenen Wert,
einen String "true" änderst du immer in boolean,
Pech wenn du mal eine Stringvariable hast, die auch "true" enthalten soll ;)
schwer bei Zahl-Typen

d) try + error: setPropValue aufrufen, bei Fehler mit anderen Datentypen durchprobieren...

e.)
Objekte gar nicht als boolean, sondern als Objekt speichern, in deinem Fall als String,
zögert die Umwandlung natürlich nur hinaus, bis jemand darauf zugreifen will und dann an dem Problem sitzt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zum Thema ... alles mögliche! Java Basics - Anfänger-Themen 6
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
KyZarr Was brauche ich alles? Java Basics - Anfänger-Themen 2
M Get Methode alles einzeln? Java Basics - Anfänger-Themen 6
P Alles eine Typfrage Java Basics - Anfänger-Themen 7
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
B Schulprojekt mit Java, was kann man alles programmieren? Java Basics - Anfänger-Themen 5
V Was soll alles in den Konstruktor? Java Basics - Anfänger-Themen 3
K JButton alles zurücksetzen Java Basics - Anfänger-Themen 1
E ExecutorService warten bis alles fertig? Java Basics - Anfänger-Themen 5
Anfänger2011 Wie bricht man alles ab wenn eine Bedingung nicht erfüllt ist? Java Basics - Anfänger-Themen 21
J Kann man auch alles in einer Klasse schreiben? Java Basics - Anfänger-Themen 2
D setAlwaysOnTop(true); toFront(); - bringt alles nichts Java Basics - Anfänger-Themen 5
I Was gehört alles in eine Softwaredokumentation? Java Basics - Anfänger-Themen 4
M MergeSort - Threads in Anwendung bremsen alles! Java Basics - Anfänger-Themen 4
M nach dem Minimieren is alles wech.... Java Basics - Anfänger-Themen 7
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
D Es wird nicht alles angezeigt Java Basics - Anfänger-Themen 4
M Was brauch ich alles für Java Programmieren Java Basics - Anfänger-Themen 14
G Einfügen aus Zwischenablage - alles doppelt? Java Basics - Anfänger-Themen 2
K Programm tut nicht alles, was es soll Java Basics - Anfänger-Themen 3
P Was brauche ich alles um mit Java loszulegen Java Basics - Anfänger-Themen 24
2 Alles Selektieren in JEditorPane Java Basics - Anfänger-Themen 5
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
G textfield überdeckt alles Java Basics - Anfänger-Themen 3
I Drucker fragen, ob alles in ordnung Java Basics - Anfänger-Themen 3
V was alles ins Userinterface? Java Basics - Anfänger-Themen 3
D Einmal Runden ohne alles Java Basics - Anfänger-Themen 7
C GregorianCalendar glaubt mir alles wieso! Java Basics - Anfänger-Themen 12
I ImageIO.write(bild, "was gibts da alles", pfad); Java Basics - Anfänger-Themen 6
G Paint Methode löscht alles Java Basics - Anfänger-Themen 4
G Was brauch ich alles Java Basics - Anfänger-Themen 7
M JTextField auf anklickern alles wech? Java Basics - Anfänger-Themen 12
M j2ee: was braucht es alles dazu? Java Basics - Anfänger-Themen 3
R Alles ignorieren ausser Zahlen Java Basics - Anfänger-Themen 21
A Was kann Java alles? Java Basics - Anfänger-Themen 22
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
D Methode um mögliche Rezepte auszugeben Java Basics - Anfänger-Themen 12
B Nächster möglicher Tag bekommen / Nächste mögliche Zeit bekommen Java Basics - Anfänger-Themen 24
J mögliche Spielzüge zu Liste hinzufügen Java Basics - Anfänger-Themen 6
kilopack15 Mögliche ParseFileExceptions Java Basics - Anfänger-Themen 0
shiroX Methoden Mögliche Spielstände bei TicTacToe Java Basics - Anfänger-Themen 14
P Instanzvariablen mögliche Werte zuweisen Java Basics - Anfänger-Themen 6
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben