Value als String in beliebige Klasse konvertieren

Status
Nicht offen für weitere Antworten.

Matrim

Mitglied
Sorry, falls der Titel nicht ganz zutreffend ist.

Ich beschreibe mein Problem mal einfach:
Ich erhalte von einem Objekt (O1) einen Wert (als String) zurück.
Weiterhin erhalte ich den DatenTyp auch als String, kann demzufolge seine Class bestimmen.

Nun möchte ich ein Objekt (O2) erzeugen, dass diesen Wert entspricht, mit der Klasse, die durch meine Object (O1) spezifiziert wird.

Ich möchte dann nämlich mehrere solcher Werte in einer Hashtable speichern, leider funktioniert sowas wie:
Code:
  myDictionary.put(O1.getVariableName(), (O1.getVariableClass()) O1.getVariableValue());
nicht =(

Kann mir jemand helfen?

Mat.

Edit: Code Beispiel hinzugefügt (zeitgleich mit 1. Antwor)
 

meez

Top Contributor
?? So: ??

Code:
Object o2; 
o2 = Class.forName(o1.getClass().getName()).newInstance();
 

Matrim

Mitglied
meez hat gesagt.:
?? So: ??

Code:
Object o2; 
o2 = Class.forName(o1.getClass().getName()).newInstance();

Schau mal mein Codebeispiel, da wird meine konfuse Anfrage hoffentlich klarer.

Ist o1.getClass() nicht das gleiche wie Class.forName(o1.getclass().getName()) ?
Was allerdings die Klasse von o1 zurück gibt und nicht diese Variable, die so ein O1 Object hält und nur als String rausrückt.
 

meez

Top Contributor
Aendere bitte das nächste mal nicht deinen Anfangstext, sonst kann am Schluss niemand mehr nachvollziehen, was in diesem Thread besprochen wurde...(Und zudem sehen die, die eine Antwort auf eine Frage geben aus wie Idioten, weil sie eine Antwort auf etwas gegeben haben, was gar nicht gefragt wurde)...:noe:

Du kannst die Objecte clonen (Cloneable Interface)...
 

Matrim

Mitglied
meez hat gesagt.:
Aendere bitte das nächste mal nicht deinen Anfangstext, sonst kann am Schluss niemand mehr nachvollziehen, was in diesem Thread besprochen wurde...(Und zudem sehen die, die eine Antwort auf eine Frage geben aus wie Idioten, weil sie eine Antwort auf etwas gegeben haben, was gar nicht gefragt wurde)...:noe:
Sorry, hab es editiert, als noch keine Antwort da war, war also ein Timing Error. Werde das mal noch explizit hinschreiben.
Du kannst die Objecte clonen (Cloneable Interface)...
Was genau meinst du damit?
Wenn man ein Object cloned erzeugt man doch eine Kopie des eigentlichen Objectes, oder?
Mein Problem ist ja, ich habe das "Zielobject" nicht und erfahre dessen Klasse erst zur Laufzeit. Es müsste also was geben, was ein neues Object erzeugt, also so in der Art:
Code:
  Object newObject = O1.getVariableClass().newInstance(); // <-- irgendwie hier noch den Wert O1.getVariableValue() (ist ein String) rein

Ich bekomme es aber nicht gebacken =(
Ich meinte, natürlich könnte ich alle Fälle abklappern, also testen ist O1.getVariableClass() = Integer usw ... aber das sieht nicht richtig aus, oder?
 

meez

Top Contributor
Eben so:

Code:
Object newObject  = Class.forName(o1.getClass().getName()).newInstance();
newObject .setValue(01.getValue());
 

Matrim

Mitglied
meez hat gesagt.:
Eben so:

Code:
Object newObject  = Class.forName(o1.getClass().getName()).newInstance();
newObject .setValue(01.getValue());

*erm* Nein, dass funktioniert nicht. :noe:
Man kann doch nicht pauschalisieren, dass jedes Objekt eine solche setValue(String) Methode hat, die genau das tuen soll.

:meld:

Aber ist okay, mittlerweile glaube ich zu wissen, dass diese Problem einfach nicht generell lösbar ist, da man gar nicht wissen kann, ob alle möglichen Objekte überhaupt einen String zuweisen kann, für welche Operation auch immer.
(Trivial Objekte ohne Variablen/Eigenschaften/Felder).

Lösbar wäre es, wenn man zB mit Sicherheit wüsste, dass alle möglichen Objekte (möglich bzgl, dass O1 ein solches Objekt sein kann), einen String Constructor aufweisen würden. der dies regelt.

Trotzdem danke, zu wissen, dass es so (einfach) nicht geht, bringt mich doch weiter :)

Mat.
 

Isaac

Bekanntes Mitglied
Naja es kommt darauf an mit welchen Objekten du zu tun hast. Aber schau dir mal das genauer an

http://zaphod.redwave.net/books/java11u/htm/ch35.htm

Mit diesen Methoden aus der Reflection API kannst du alle Objekte die du bekommst fragen ob sie eine setValue Methode haben die auf den Parameter String hört. Keine Ahnung ob das das ist was du brauchst, ich verstehe dein Ausgangsproblem nämlich nicht wirklich. Aber mit der ReflektionAPI kann man eigentlich fast alles über Objekte zur Laufzeit erfahren.
 

Matrim

Mitglied
Isaac hat gesagt.:
Naja es kommt darauf an mit welchen Objekten du zu tun hast.
Eben, es kommt auf die Objekte drauf an, falls es aber wirklich alle möglichen Objekte sein können, wie kann ich dann herausfinden, welche Methode die setValue Methode ist?
Isaac hat gesagt.:
Aber schau dir mal das genauer an

http://zaphod.redwave.net/books/java11u/htm/ch35.htm

Mit diesen Methoden aus der Reflection API kannst du alle Objekte die du bekommst fragen ob sie eine setValue Methode haben die auf den Parameter String hört. Keine Ahnung ob das das ist was du brauchst, ich verstehe dein Ausgangsproblem nämlich nicht wirklich. Aber mit der ReflektionAPI kann man eigentlich fast alles über Objekte zur Laufzeit erfahren.

Danke, das schau ich mir wirklich einmal an.

Mat.
 
B

bygones

Gast
Matrim hat gesagt.:
Isaac hat gesagt.:
Naja es kommt darauf an mit welchen Objekten du zu tun hast.
Eben, es kommt auf die Objekte drauf an, falls es aber wirklich alle möglichen Objekte sein können, wie kann ich dann herausfinden, welche Methode die setValue Methode ist?
Hab nicht alles verfolgt - aber ist es möglich, dass du zwingst dass das eine Objekt von dem du die instanz erstellen willst ein bestimmtes interface implementieren muss - dieses interface hat dann die setValue methode ?!
Dann ist es ja kein problem ?!
 

Matrim

Mitglied
deathbyaclown hat gesagt.:
Matrim hat gesagt.:
Isaac hat gesagt.:
Naja es kommt darauf an mit welchen Objekten du zu tun hast.
Eben, es kommt auf die Objekte drauf an, falls es aber wirklich alle möglichen Objekte sein können, wie kann ich dann herausfinden, welche Methode die setValue Methode ist?
Hab nicht alles verfolgt - aber ist es möglich, dass du zwingst dass das eine Objekt von dem du die instanz erstellen willst ein bestimmtes interface implementieren muss - dieses interface hat dann die setValue methode ?!
Dann ist es ja kein problem ?!

Ja, _wenn_ ich diese Voraussetzung an das "Zielobject" stelle, würde es so funktionieren.
 

Isaac

Bekanntes Mitglied
Na wie gesagt, mit den Methoden fragst du einfach das Objekt "Hast du eine setValue Methode die den Parameter String braucht?" Wenn ja, rufe die Methode bitte auf.

Damit kannst du alle Objekte filtern die diese Methode eben nicht haben und dein Problem ist erledigt. Allerdings hat auch jede Generic seine Grenzen. Es mag ja durchaus Objekte geben die eine setValue(String string) Methode haben aber die mit dem Value von dir nichts anfangen können. Aber so generisch kann man halt wirklich nicht sein.
 
B

bygones

Gast
daher mein Vorschlag eines definierten Interfaces das die Objekte implementieren müssen....
 
B

bygones

Gast
Isaac hat gesagt.:
Nuja, du kannst z.b. dem Objekt "String" aber kein Interface mehr aufzwingen.
ich meinte:
Code:
MyInterface newObject  = (MyInterface)Class.forName(o1.getClass().getName()).newInstance();
newObject .setValue(01.getValue());
mit dem Interface
Code:
public interface MyInterface{
  public void setValue(Object o);
}
 

Isaac

Bekanntes Mitglied
Du kannst aber nen String nicht auf das Interface casten und er sagte ja das alle Objekte vorkommen können. Also Integer, String, IrgendEinesSeinerEigenenObjekte, Object....

Da funktioniert das eben so nicht.
 
B

bygones

Gast
mhm - ich glaube wir reden aneinander vorbei....
ich will dem Object das über newInstance() erzeugt wurde das Interface aufzwingen....
 

Isaac

Bekanntes Mitglied
Möglicherweise reden wir aneinander vorbei. Wenn ich dich richtig verstehe willst du das so machen..


Code:
public class Test
{
    public static void main(String[] args) 
    {
        String str ="Interface";
        Object o   = (Object)str; 
        try
        {
            MyInterface newObject = (MyInterface)Class.forName(o.getClass().getName()).newInstance();
            newObject.setValue(o.toString());
        }
        catch (InstantiationException e){}
        catch (IllegalAccessException e){}
        catch (ClassNotFoundException e){}
        
    }
    
    public interface MyInterface{ 
        public void setValue(Object o); 
      }
}


Aber genau das geht halt nicht mit allen Objekten, wie das hier die Klasse String zeigt.
 
B

bygones

Gast
nein so meinte ich es nicht..
er muss natürlich gewährleisten, dass die Objekte von denen eine Instanz erzeugt werden soll dieses Interface implementieren.... mit vordefinierten klassen wie String geht das natürlich nicht !
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Q For-Schleife in String-Value Allgemeine Java-Themen 3
Fredy Return by value mit String?? Allgemeine Java-Themen 6
W Socket.setSoTimeout -> BufferedReader -> Default value Allgemeine Java-Themen 4
M Thymeleaf th value und th text Allgemeine Java-Themen 1
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 2
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S @Value mit bestimmt Werten, sonst default Allgemeine Java-Themen 42
H Klassen LibGDX - Verschiedene Klassen als Value in einer Map Allgemeine Java-Themen 8
B HashMap aus Value Key bekommen Allgemeine Java-Themen 2
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
L Variablen HashMap nimmt value nicht an Allgemeine Java-Themen 3
M Java - Call by value <-> Call by reference Allgemeine Java-Themen 16
B Load of Known null Value Allgemeine Java-Themen 9
T Hashmap mit geordneter/ungeordneter liste als Value Allgemeine Java-Themen 5
algorismi int-variable Value Change event Allgemeine Java-Themen 3
G HTTP key-value-paar Allgemeine Java-Themen 8
J Map nach value sortieren Allgemeine Java-Themen 14
G Verschachtelte Treemaps, nach Value sortieren Allgemeine Java-Themen 11
faetzminator Regex zur Suche von "value-losen" Attributen in HTML Tags Allgemeine Java-Themen 7
T Set.contains() auch false wenn value == null? Allgemeine Java-Themen 4
G Generics in Map. Type of value abhängig vom key Allgemeine Java-Themen 3
S Map die die auch ein getKey(value) erlaubt? Allgemeine Java-Themen 2
MQue call by value Allgemeine Java-Themen 5
F Javadoc: @value tag nicht für private fields? Allgemeine Java-Themen 11
P call by value/referenz Allgemeine Java-Themen 4
N Sieht aus wie ein "Call by Referece/Call by Value" Allgemeine Java-Themen 7
S Call by Value Allgemeine Java-Themen 9
T [TreeMap] Corresponding value to a key Allgemeine Java-Themen 10
V Objekt aus Session als copy by value bekommen Allgemeine Java-Themen 4
R Wert in Hashtable ändern (Key ändern, Value bleibt) Allgemeine Java-Themen 3
H Aus der FAQ: Call by Value <-> Call by Reference Allgemeine Java-Themen 8
C Map(Key/Value) mit mehreren Values Allgemeine Java-Themen 16
C EML Email Text in String wandeln Allgemeine Java-Themen 9
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
M String Allgemeine Java-Themen 10
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
O String in Long Hexerdezimal umwandel Allgemeine Java-Themen 14
N String vergleichen. Allgemeine Java-Themen 27
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
M Switches ohne String Allgemeine Java-Themen 18
AmsananKING String Iteration Allgemeine Java-Themen 5
S Shuffle String aus if-clause Allgemeine Java-Themen 11
Besset Variablen Ist String = "" + int inordnung? Allgemeine Java-Themen 6
M Map <Long, String> zu Map<String, Long> Allgemeine Java-Themen 9
S String Encoding Verständnisproblem Allgemeine Java-Themen 22
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
SaftigMelo Bug Fixen von String-spliten Allgemeine Java-Themen 8
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
YohnsonM String - Aufteilung und Nutzung einzelner Chars Allgemeine Java-Themen 7
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
S String umbenennen: wie? Allgemeine Java-Themen 4
x46 String Format Fehler Allgemeine Java-Themen 2
S ISO 8601 -> getter / setter String Allgemeine Java-Themen 3
L String zu repräsentativen Wert Allgemeine Java-Themen 0
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
L regex ganzer string? Allgemeine Java-Themen 2
L Ist ein string ein erlaubter variabel name? Allgemeine Java-Themen 2
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
N String Array Eingabe Allgemeine Java-Themen 6
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
R char aus String entfernen Allgemeine Java-Themen 10
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Ini Text aus String parsen Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
F Datei in String-Array einlesen Allgemeine Java-Themen 8
S Marker aus String ermitteln Allgemeine Java-Themen 5
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Bei String.format ein Komma statt einem Punkt ausgeben lassen Allgemeine Java-Themen 1
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
J String - Vergleiche Allgemeine Java-Themen 7
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
G CSV in String Allgemeine Java-Themen 7
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
J Falls der String ein "X" beinhaltet Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben