所以我很擅长使用反射,结果不一致。
首先我尝试将此行转换为反射
userForm.setEquipment(currentForm.getFirstEquipment);
这就是我所做的,似乎有效。
try{
Method setObject = userForm.getClass().getMethod("setObject", Shipment.class);
setObject.invoke(userForm, currentForm.getFirstObject());
}
catch ( Exception e){
Logger.error(e);
}
但是当我尝试使用不同的线条进行类似的操作时,它不起作用。
这就是我的开始。
List<Shipment> list = new ArrayList<Shipment>();
list.add(userForm.getFirstObject);
这就是我现在所拥有的,但它似乎不起作用。
List<Shipment> list = new ArrayList<Shipment>();
try{
Method add = list.getClass().getMethod("add", Shipment.class);
add.invoke(list, userForm.getFirstObject());
}
catch ( Exception e){
Logger.error(e);
}
答案 0 :(得分:1)
List
没有add(Shipment)
方法。它确实有一个add(T)
。但由于类型擦除类型信息丢失。要解决该方法,请使用以下行:
list.getClass().getMethod("add", Object.class)