我正在尝试这样做:
Field field = classeDoObjetoDaColecao.getDeclaredField(caminho[0]);
//Here I get the setMethod, based on the attribute (via field)
Method metodoSet = classeDoObjetoDaColecao.getMethod(partesLista[0], field.getType());
metodoSet.invoke(objetoNovo,field.getType().cast(value));
其中value
为String
, field '为原始int
这会产生一个异常,String
不能被强制转换为int
。
简单回答。不能将String类型强制转换为int。
尝试使用
Integer.parseInt(String);
Cast不能转换对象。它只是指定它。
例如,你有一个父类有两个子类。
没有动态的方法可以做到这一点。您需要确定您有一个类型为int
或Integer
的字段和一个要转换的类型为String
的值。
一旦你有了,你可以使用Integer.parseInt(..)
进行转换。
如果你想添加其他转换对,你需要做同样的事情。查找源和目标类型,并根据这些类型进行适当的转换。