kann man einen Datentyp mit einem String festlegen?
z.B.
String type = "int"
type = 5;
z.B.
String type = "int"
type = 5;
public Object umwandeln(Object ichWillAufgerufenWerden, String diesenTypenWillIch, Object dasHabIch) {
String diesenTypenHabIch = dasHabIch.getClass().getSimpleName();
if (!diesenTypenWillIch.equals(diesenTypenHabIch)) {
try {
String methodenName = diesenTypenHabIch.concat("In").concat(diesenTypenWillIch);
return ichWillAufgerufenWerden.getClass().getMethod(methodenName, new Class[] {dasHabIch.getClass()})
.invoke(new Object[] {dasHabIch});
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (java.lang.reflect.InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return dasHabIch;
}
also ich habe eine methode, die einen datentyp in einen anderen umwandelt.
aber dabei kommt ein object raus:
Java:..CODE..
so und dann will ich mit
diesenTypenWillIch a = (diesenTypenWillIch) Object;
das Object in einen normalen typen umwandeln, den ich halt vorher haben wollte
package convert;
public interface IConverter {
public Object convert(Object o1);
}
package convert;
public class StringToIntConv implements IConverter{
public Object convert(Object o1) {
if (o1 instanceof String) {
String o1Str = (String) o1;
System.out.println("Konvertiere String to Int");
return Integer.parseInt(o1Str);
}
return null;
}
}
package convert;
public class IntToStringConv implements IConverter{
public Object convert(Object o1) {
if (o1 instanceof Integer){
Integer o1Int = (Integer) o1;
System.out.println("Konvertiere IntToString");
return o1Int.toString();
}
return null;
}
}
package convert;
import java.util.HashMap;
public class Tester {
HashMap<String, IConverter> converter = new HashMap<String, IConverter>();
/**
* @param args
*/
public static void main(String[] args) {
Tester t = new Tester();
t.init();
System.out.println(t.umwandeln("1234", "Int", "String"));
System.out.println(t.umwandeln(3, "String", "Int"));
}
public void init(){
converter.put("StringToInt", new StringToIntConv());
converter.put("IntToString", new IntToStringConv());
}
public Object umwandeln(Object ichWillAufgerufenWerden, String diesenTypenWillIch, Object dasHabIch) {
IConverter conf = converter.get(dasHabIch+"To"+diesenTypenWillIch);
if(conf== null){
System.out.println("Konverter nicht gefunden");
return null;
}
return conf.convert(ichWillAufgerufenWerden);
}
}
kann man einen Datentyp mit einem String festlegen?
z.B.
String type = "int"
type = 5;
public enum moeglichkeiten {
INT,
BOOLEAN,
// usw
CHAR;
// nun die Methoden um die einträge umzuwandeln für den späteren vergleich
// Saves the Enumnames in a List
private static List<String> enumliste;
// Returns the Enum entrys in a List<String>
public static List<String> getValues() {
if (enumliste == null) {
moeglichkeiten[] array = values();
List<String> list = new ArrayList<String>();
for (moeglichkeiten mo : array) {
list.add(mo.name());
}
enumliste = list;
}
return enumliste;
}
}
// bis hier "fast" das selbe, nur andere einträge im Enum
Object type;
public void zuweisung(String text) {
switch (moeglichkeiten.valueOf(text) {
case INT:
// von hier könntest du dann eine entsprechende methode ausrufen die z.b etwa so sein könnte
type = new Integer(5);
int fuenf = ((Integer)(obj)).intValue();
break;
//usw
}
}
public enum DataType {
Integer(Integer.class), Double(Double.class), Boolean(Boolean.class); // und was es noch geben soll
// konstruktor der sich die class speichert
static Datatype convert(Class<?> c) {
// gebe anhand der Klasse den Datentyp zurueck
}
<T> T getType(String value, DataType type) {
switch(type) {
case Integer:
return (T)Integer.valueOf(value);
case Double:
return (T)Double.valueOf(value);
case Boolean:
return (T)Boolean.valueOf(value);
// und was noch fuer typen es geben soll mit deren Umwandlungen
}
}
String habIch = ; // irgendwas
Class<?> willIch = ; // woheer auch immer
getType(habIch, DataType.convert(willIch));