我有一個方法,它有一個輸入列表和每個輸入值,我必須將其轉換爲所需的類型。 (實際上這個列表的參數值是「some」形式的,我應該將其轉換爲所需的類型,所需的類型是所需的類型,這是通過反射的api調用)ClassCastException在投票列表<String>到類<?>
我已經編寫了類似這樣的:
Type[] argTypes = method.getGenericParameterTypes();
List<Object> acutalValues = // List of actual values from method input.
// Resultant list of arguments which will holds casted values.
List<Object> arguments = new ArrayList<Object>(argTypes.length);
for (int i = 0; i < argTypes.length; i++) {
Class<?> requiredClassTYpe = (Class<?>) argTypes[i]; // argTypes[1] =java.util.List<java.lang.String> fails..
// cast the actual value to the required type. Required type is requiredClassType
arguments.add(castToRequiredType(requiredClassTYpe, actualValues.get(i)));
}
異常消息是這樣的:
ClassCastException: Cannot cast sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl (id=77) to java.lang.Class
現在,如果我的第一行更改爲
Type[] argTypes = method.getParameterTypes()
然後它通過任何想法爲什麼它可能會發生這樣的事情?
那麼,argTypes [i]的類型是什麼? – jtahlborn
@jtahlorn:// argTypes [1] = java.util.List失敗。 –
不,我的意思是什麼是實際價值的類型,這是失敗的演員? – jtahlborn