String aus Textfeld in entsprechendes Array umwandeln

Copia

Grünschnabel
Hallo zusammen,

ich habe ein Textfeld, welches grundsätzlich Daten enthält, die in einem Array gespeichert werden sollen. Also nehme ich mir den String mit textfield.getText() und splitte ihn bei jedem Komma. Dann habe ich ein String[]. Jetzt kann aber der Typ des Arrays in der Datenbank beliebig sein, also Integer[], Boolean[], ... Wie wandel ich jetzt sinnvoll den String[] in die entsprechenden Typen um?

So mache ich das derzeit in die Umwandlung in einen Integer[]:


Code:
String valueList = textField.getText();
                String []values = valueList.split(",");
                Integer[] intVals = new Integer[values.length];
                for(int i = 0; i < values.length; i++){
                        intVals[i] = Integer.valueOf(values[i]);
                }

Muss ich diese Schleife jetzt abhängig vom Typ durchlaufen, damit ich das entsprechende "valueOf()" benutzen kann? Das scheint mir so hässlich :-/
 
Zuletzt bearbeitet:
Hm, sind die Daten denn willkuerlich sortiert? Oder hast du immer die gleiche Reihenfolge zb: int, int, date, varchar
und dann wieder von vorne. Weil irgendwie musst du ja bestimmen, welcher Wert wo in die Datenbank gehoert?
 
Ok, war wohl ein bisschen unverständlich von mir :)
In einem Textfeld sollten nur die gleichen Typen stehen. D.h. entweder stehen da nur durch Komma getrennte Integer oder nur Strings, etc.
Die werden dann auch so als Array in der Datenbank in einem Feld gespeichert. Das heißt, das Feld in der Datenbank ist tatsächlich ein varchar[] oder int[]...

Toll wäre es ja, wenn man auf einem Klassenobjekt ValueOf() aufrufen könnte, aber ich finde so eine Methode nicht :-( Also ich hab einen Class<?> type, in dem dann zB drin steht Integer[].class, aber auf type kann ich kein valueOf() aufrufen :-(
(Wobei... wenn ich jetzt recht überlege, würde das mit dem valueOf auf Integer[].class eh nicht funktionieren, da die einzelnen Werte ja Integer sind und keine Integer[] ;-))

Noch mal zum Verständnis: Eine mögliche Lösung wäre:

Code:
                String valueList = textField.getText();
                String []values = valueList.split(",");
                Object[] vals = null;
                
                Class<?> type1 = cellModel.getCellClass();
                
                if(type1 == Integer[].class) {
                        vals = new Integer[values.length];
                        for(int i = 0; i < values.length; i++){
                                vals[i] = Integer.valueOf(values[i]);
                        }
                } else if(type1 == Boolean[].class) {
                        vals = new Boolean[values.length];
                        for(int i = 0; i < values.length; i++){
                                vals[i] = Boolean.valueOf(values[i]);
                        }
                } else [...]
 
Zuletzt bearbeitet:
Zurück