CommonInvoke.java 文件源码

java
阅读 34 收藏 0 点赞 0 评论 0

项目:X4J 作者:
/**
 * 方法的参数加载对象 可优化:Parameter包含类型和名称
 * 
 * @param parameterTypes
 * @param parameters
 * @return
 */
private Object[] loadParameterWithMethod(Class[] parameterTypes, Parameter[] parameters) {
    Object[] paramObjs = new Object[parameterCount];

    // 厉害了,我的哥。
    // 今天找了一整天,JDK/ASM都不行,Paranamer稳!
    Paranamer paranamer = new BytecodeReadingParanamer();
    String[] parametersName = paranamer.lookupParameterNames(invokeMethod);

    int i = Constants.NUMBER.ZERO;
    for (Class<?> type : parameterTypes) {
        if (RequestContext.getInstance().isInContextObjs(type)) {
            paramObjs[i] = RequestContext.getInstance().searchObjByType(type);
        } else {
            TypeParser parser = TypeParser.newBuilder().build();
            Object searchedObject = RequestContext.getInstance().searchObjByName(parametersName[i]);
            paramObjs[i] = parser.parseType(searchedObject.toString(), type);
        }
        i++;
    }
    // 通过类型加载
    // searchAndBindByType(paramObjs, parameterTypes);
    // TODO 通过参数名加载
    return paramObjs;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号