当前位置: 首页>>代码示例>>Java>>正文


Java Parameter.getAnnotations方法代码示例

本文整理汇总了Java中java.lang.reflect.Parameter.getAnnotations方法的典型用法代码示例。如果您正苦于以下问题:Java Parameter.getAnnotations方法的具体用法?Java Parameter.getAnnotations怎么用?Java Parameter.getAnnotations使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.lang.reflect.Parameter的用法示例。


在下文中一共展示了Parameter.getAnnotations方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getParamName

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
/**
 * 获取字段的命名
 * 
 * @param parameter
 *            要获取命名的字段
 * @return 指定字段的命名
 */
private static String getParamName(Parameter parameter) throws ParamterNoNamingException {
	Annotation[] annotations = parameter.getAnnotations();
	GeneralParam generalParam = null;
	Context context = null;
	for (Annotation annotation : annotations) {
		if (annotation instanceof GeneralParam) {
			generalParam = (GeneralParam) annotation;
			break;
		} else if (annotation instanceof Context) {
			context = (Context) annotation;
			break;
		}
	}

	if (generalParam != null && !generalParam.value().trim().isEmpty()) {
		return generalParam.value();
	} else if (context != null) {
		return "Context";
	} else {
		throw new ParamterNoNamingException(parameter);
	}
}
 
开发者ID:935237604,项目名称:easysocket,代码行数:30,代码来源:ApiUtil.java

示例2: pathCompiler

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
public static Pattern pathCompiler(String path, Method method) {
    Parameter[] parameters = method.getParameters();
    for (Parameter parameter : parameters) {
        if (parameter.getAnnotations().length == 0) {
            continue;
        }
        Annotation annotation = parameter.getAnnotations()[0];
        if (annotation instanceof PathVariable) {
            //如果是字符串
            if (parameter.getType() == String.class) {
                path = path.replace("{" + parameter.getName() + "}", "[0-9\\d\\D]*");
            }
            //如果是数字
            else if (parameter.getType() == Integer.class
                    || parameter.getType() == Long.class) {
                path = path.replace("{" + parameter.getName() + "}", "[0-9]*");
            }

        }
    }
    return Pattern.compile(path);
}
 
开发者ID:zhyzhyzhy,项目名称:Ink,代码行数:23,代码来源:RouteFinder.java

示例3: of

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
/**
 * Create key for single method/constructor parameter.
 *
 * @param parameter
 *          Parameter to build key for.
 * @return Created key.
 */
public static Key of(Parameter parameter) {
    Annotation[] annotations = parameter.getAnnotations();

    if (!parameter.getType().isAssignableFrom(Supplier.class)) {
        return new Key(parameter.getParameterizedType(), false,
                       parameter.getType(), findBindingAnnotation(annotations));
    }

    Type type = parameter.getParameterizedType();

    if (type instanceof ParameterizedType) {
        Type[] args = ((ParameterizedType) type).getActualTypeArguments();

        if (args.length > 0 && args[0] instanceof Class) {
            return Key.of(args[0], true, annotations);
        }
    }

    throw new InjectorException("Unable to determine parameter type for " + parameter);
}
 
开发者ID:siy,项目名称:booter-injector,代码行数:28,代码来源:Key.java

示例4: isContextParam

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
/**
 * 判断参数是否是Context参数
 * 
 * @param parameter
 *            参数
 * @return 如果返回true说明此参数是Context类型
 */
private static boolean isContextParam(Parameter parameter) {
	Annotation[] annotations = parameter.getAnnotations();
	for (Annotation annotation : annotations) {
		if (annotation instanceof Context) {
			return true;
		}
	}
	return false;
}
 
开发者ID:935237604,项目名称:easysocket,代码行数:17,代码来源:ApiUtil.java

示例5: processAnnotationOnMethod

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
private void processAnnotationOnMethod(Method method, MethodMetadata.Builder requestTemplateBuilder) {
    AnnotatedTypeMetadata methodMetadata = new StandardMethodMetadata(method);
    Parameter[] parameters = method.getParameters();

    processRequestMappingAnnotation(methodMetadata, requestTemplateBuilder);

    for (int i = 0; i < parameters.length; i++) {
        Parameter parameter = parameters[i];
        processAnnotationsOnParameter(requestTemplateBuilder, parameter, i);
        if (parameter.getAnnotations().length == 0) {
            requestTemplateBuilder.body(i, parameter.getParameterizedType());
        }
    }
}
 
开发者ID:jbrixhe,项目名称:spring-webflux-client,代码行数:15,代码来源:MethodMetadataFactory.java

示例6: processAnnotationsOnParameter

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
private void processAnnotationsOnParameter(MethodMetadata.Builder requestTemplateBuilder, Parameter parameter, int i) {
    if (parameter.getAnnotations() != null) {
        for (Annotation annotation : parameter.getAnnotations()) {
            AnnotatedParameterProcessor annotatedParameterProcessor;
            if (annotation != null && (annotatedParameterProcessor = annotatedArgumentProcessors.get(annotation.annotationType())) != null) {
                annotatedParameterProcessor.processAnnotation(requestTemplateBuilder, annotation, i, parameter.getParameterizedType());
            }
        }
    }
}
 
开发者ID:jbrixhe,项目名称:spring-webflux-client,代码行数:11,代码来源:MethodMetadataFactory.java

示例7: processAnnotationsOnParams

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
/**
 * Process annotations on params.
 *
 * @param requestTemplate the request template
 * @param method          the method
 */
protected void processAnnotationsOnParams(RestyRequestTemplate requestTemplate, Method method) {
    for (int i = 0; i < method.getParameters().length; i++) {
        Parameter parameter = method.getParameters()[i];
        // 处理PathVariable
        PathVariable pathVariable = findMergedAnnotation(parameter, PathVariable.class);
        if (pathVariable != null) {
            PathVariableData pathVariableData = new PathVariableData();
            pathVariableData.setIndex(i);
            pathVariableData.setName("{" + (StringUtils.isNotEmpty(pathVariable.name()) ? pathVariable.name() : parameter.getName()) + "}");
            pathVariableData.setRequired(pathVariable.required());
            requestTemplate.addPathVariable(pathVariableData);
            continue;
        }
        // 处理RequestParam
        RequestParam requestParam = findMergedAnnotation(parameter, RequestParam.class);
        if (requestParam != null) {
            RequestParamData requestParamData = new RequestParamData();
            requestParamData.setIndex(i);
            requestParamData.setName(StringUtils.isNotEmpty(requestParam.name()) ? requestParam.name() : parameter.getName());
            requestParamData.setRequired(requestParam.required());
            requestParamData.setDefaultValue(resolveDefaultValue(requestParam.defaultValue()));
            requestTemplate.addRequestParam(requestParamData);
            continue;
        }

        RequestHeader requestHeader = findMergedAnnotation(parameter, RequestHeader.class);
        if (requestHeader != null) {
            RequestHeaderData requestHeaderData = new RequestHeaderData();
            requestHeaderData.setIndex(i);
            requestHeaderData.setName(StringUtils.isNotEmpty(requestHeader.name()) ? requestHeader.name() : parameter.getName());
            requestHeaderData.setRequired(requestHeader.required());
            requestHeaderData.setDefaultValue(resolveDefaultValue(requestHeader.defaultValue()));
            requestTemplate.addRequestHeader(requestHeaderData);
            continue;
        }

        // 处理RequestBody和无注解参数
        RequestBody requestBody = findMergedAnnotation(parameter, RequestBody.class);
        if ((requestBody != null || parameter.getAnnotations().length == 0)
                && parameter.getType() != RestyFuture.class) {
            RequestBodyData requestBodyData = new RequestBodyData();
            requestBodyData.setIndex(i);
            requestBodyData.setName(parameter.getName());
            requestBodyData.setDefaultValue(null);
            if (requestBody != null) {
                requestBodyData.setRequired(requestBody.required());
            } else {
                requestBodyData.setRequired(false);
            }
            requestTemplate.addRequestBody(requestBodyData);
        }
    }
}
 
开发者ID:darren-fu,项目名称:RestyPass,代码行数:60,代码来源:SpringAnnotationWrapper.java

示例8: doResponse

import java.lang.reflect.Parameter; //导入方法依赖的package包/类
/**
 * 解析请求并返回响应
 */
private static void doResponse(HttpServletRequest request, HttpServletResponse response) throws Exception {
    String url = request.getRequestURI();
    RequestMethod requestMethod = RequestMethod.getEnum(request.getMethod());
    log.info("{} {}", requestMethod, url);
    MethodDetail methodDetail = UrlMappingPool.getInstance().getMap(url, requestMethod);

    // 如果找不到对应的匹配规则
    if (methodDetail == null) {
        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
        response.getWriter().print(Constants.NOT_FOUND);
        return;
    }

    Class clazz = methodDetail.getClazz();
    Object object = BeansPool.getInstance().getObject(clazz);
    if (object == null)
        throw new RuntimeException("can't find bean for " + clazz);

    Map<String, String> requestParam = new HashMap<>();
    request.getParameterMap().forEach((k, v) -> {
        requestParam.put(k, v[0]);
    });

    List<String> params = new ArrayList<>(); // 最终的方法参数
    Method method = methodDetail.getMethod();

    // 获取方法的所有的参数
    Parameter[] parameters = method.getParameters();
    for (Parameter parameter : parameters) {
        String name = null;
        // 获取参数上所有的注解
        Annotation[] annotations = parameter.getAnnotations();
        for (Annotation annotation : annotations) {
            if (annotation.annotationType() == Param.class) {
                Param param = (Param) annotation;
                name = param.value();
                break;
            }
        }
        // 如果请求参数中存在这个参数就把该值赋给方法参数,否则赋值null
        params.add(requestParam.getOrDefault(name, null));
    }

    Object result = method.invoke(object, params.toArray());

    response.setStatus(HttpServletResponse.SC_OK);
    response.getWriter().print(result);
}
 
开发者ID:RitterHou,项目名称:Geisha,代码行数:52,代码来源:JettyServer.java


注:本文中的java.lang.reflect.Parameter.getAnnotations方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。