Java反射的麻烦

时间:2017-03-26 18:45:48

标签: java reflection

所以我很擅长使用反射,结果不一致。

首先我尝试将此行转换为反射

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);
}

1 个答案:

答案 0 :(得分:1)

List没有add(Shipment)方法。它确实有一个add(T)。但由于类型擦除类型信息丢失。要解决该方法,请使用以下行:

list.getClass().getMethod("add", Object.class)