我有一個類類型,我有一個字符串值:一個字符串值轉換到一個未知的(在編譯時)對象類型
Class<?> type = Integer.class // <-- in reality, that type is
// determined at runtime
String value = "3"; // <-- same here, actually read from a file
我的目標就是實例「類型」的一個實例,與「價值」的價值填充它。所以,我有
Integer i = new Integer(value);
相當於是唯一可能的方式做到這一點很長的鏈if語句:
if (type == Integer.class) {
// do this
}
還是有另一種聰明/正確的方法來做到這一點?可能的類類型也能像整數/日期等完全不同的......
EDIT1
這裏是一些更多的上下文:
我有一個數值的文件,該文件的文本表示不同數據類型的實例:
1|3.4|2011-08-24
在我的計劃,我得到一個類的類型,並在該類這兩者都是在編譯時未知的我的方法。
我想在該類型的實例上調用該方法,並將文件中的值作爲參數。但爲此,我必須有相應的對象,該值可以是Integer/int,float/double和Date。 我可以通過反射得到這些數據類型的方法的形式參數,但我不知道最好的方式來進行從字符串到對象的轉換...
也許這個僞程序將清除事情了:
String[] values = getValuesFromFile;
Class<?> type = getType();
Method method = getMethod();
Class<?>[] formalParameterTypes = getMethodParameterTypes();
Object[] objects;
for(int i; i < values.length; i++)
objects[i] = convert(values[i],formalParameterTypes[i]);
method.invoke(objects);
請出示各地使用更多的上下文。 – Bohemian