2
下調用一個方法是我的方法,我試圖在Java中使用反射調用的方法:無法通過反射
@PreAuthorize("isAuthenticated() and hasPermission(#request, 'CREATE_REQUISITION')")
@RequestMapping(method = RequestMethod.POST, value = "/trade/createrequisition")
public @ResponseBody
void createRequisition(@RequestBody CreateRequisitionRO[] request,
@RequestHeader("validateOnly") boolean validateOnly) {
logger.debug("Starting createRequisition()...");
for (int i = 0; i < request.length; i++) {
CreateRequisitionRO requisitionRequest = request[i];
// FIXME this has to be removed/moved
requisitionRequest.setFundManager(requisitionRequest.getUserId());
// FIXME might have to search using param level as well
SystemDefault sysDefault = dbFuncs.references.systemDefault
.findByCompanyAndDivisionAndPortfolio(
userContext.getCompany(),
userContext.getDivision(),
requisitionRequest.getPortfolio());
requisitionRequest.setCustodianN(sysDefault.getCustodianN());
gateKeeper.route(requisitionRequest);
}
}
我創造的反思方式:
public static void main(String[] args) {
Class[] paramString = new Class[1];
paramString[0] = String.class;
//Object parameter
Class[] parames = new Class[1];
parames[0] = CreateRequisitionRO.class;
Class booleanVal ;
booleanVal = Boolean.class;
Class cls;
CreateRequisitionRO[] request = new CreateRequisitionRO[10];
try {
//load the HexgenWebAPI at runtime
cls = Class.forName("com.hexgen.api.facade.HexgenWebAPI");
Object obj = cls.newInstance();
Method method = cls.getDeclaredMethod("createRequisition", parames,booleanVal);
method.invoke(obj, request,true);
}catch(Exception ex){
ex.printStackTrace();
}
}
我得到但以下情況除外:
The method getDeclaredMethod(String, Class...) in the type Class is not applicable for the arguments (String, Class[], Class)
在以下行
Method method = cls.getDeclaredMethod(「createRequisition」,parames,booleanVal);
我明白這個異常,但我的方法參數是對象數組。如果我刪除陣列比我得到NoSuchMethod Exception
如何解決這個問題?
偉大的觀察,它解決了編譯時問題。但我現在得到這個'java.lang.reflect.InvocationTargetException'。你能指導我嗎?同時我會接受這個答覆與upvote。 :) – 2013-04-05 10:06:56
@Anto'InvocationTargetException'意味着該方法的實現拋出一個錯誤。抓住你的代碼,調用'getCause()',看看你的例外的真正原因是什麼。此時,問題將出現在帖子頂部的段中,或者在您從'newInstance()'調用的默認構造函數中。 – dasblinkenlight 2013-04-05 10:25:36