首页 / JAVA / (Java)if语句优化
(Java)if语句优化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了(Java)if语句优化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2025字,纯文字阅读大概需要3分钟。
内容图文
![(Java)if语句优化](/upload/InfoBanner/zyjiaocheng/787/87e9be4e3aef481ebc3c68213b840f33.jpg)
需要优化此代码:
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import javax.ws.rs.CookieParam;
import javax.ws.rs.FormParam;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
...
private String valueParam(Annotation a) {
String value = "";
if (a.annotationType() == QueryParam.class) {
value = ((QueryParam) a).value();
} else if (a.annotationType() == PathParam.class) {
value = ((PathParam) a).value();
} else if (a.annotationType() == CookieParam.class) {
value = ((CookieParam) a).value();
} else if (a.annotationType() == HeaderParam.class) {
value = ((HeaderParam) a).value();
} else if (a.annotationType() == MatrixParam.class) {
value = ((MatrixParam) a).value();
} else if (a.annotationType() == FormParam.class) {
value = ((FormParam) a).value();
}
return value;
}
SonarQube抱怨这种方法的复杂性.
改变它并不容易,因为我们需要在获取其值之前检查注释类型!
注意:陷阱位于Annotation接口上,该接口没有value()方法.
附: :此代码基于此example(代码示例4)
解决方法:
如果反射是一种选择,你总是可以这样做
public class Test {
@PathParam("path")
public Response doSomething() {
return null;
}
public static void main(String[] args) throws Exception {
Method method = Test.class.getMethod("doSomething");
Annotation annotation = method.getAnnotations()[0];
System.out.println(getValue(annotation));
}
private static String getValue(Annotation annotation) throws Exception {
Class<?> type = annotation.annotationType();
if (!ANNOTATIONS.contains(type)) {
throw new IllegalArgumentException("...");
}
String value = (String) type.getMethod("value").invoke(annotation);
return value;
}
private static final Set<Class<?>> ANNOTATIONS;
static {
Set<Class<?>> annotations = new HashSet<>();
annotations.add(HeaderParam.class);
annotations.add(QueryParam.class);
annotations.add(PathParam.class);
annotations.add(MatrixParam.class);
annotations.add(CookieParam.class);
annotations.add(FormParam.class);
ANNOTATIONS = Collections.unmodifiableSet(annotations);
}
}
内容总结
以上是互联网集市为您收集整理的(Java)if语句优化全部内容,希望文章能够帮你解决(Java)if语句优化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。