2017-03-26 10 views
0

私はリフレクションを初めて使うので、結果が一貫していません。Javaのリフレクションに問題がある

まず私は、これは私がやったことであり、動作しているようです反射に次の行を変換

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

は 'Shipment'クラス – developer

+0

は「動作しない」ためのコードを追加します。便利な記述ではありません。 – chrylis

答えて

1

Listadd(Shipment)メソッドを持っていません。しかしそれはadd(T)を持っています。しかし、タイプ消去タイプのため、情報は失われる。メソッドの使用を解決するには、この行:

list.getClass().getMethod("add", Object.class) 
関連する問題