文章目录
常见问题
问题1:Use try-with-resources or close this “XXX” in a “finally” clause.
try-with-resources是JDK7之后版本的新特性,操作的类只要是实现了AutoCloseable接口就可以在try语句块退出的时候自动调用close方法关闭流资源
例:
原来使用try-catch-finally的代码
BufferedReader br = new BufferedReader(new FileReader(file));
try {
return br.readLine();
} finally {
if (br != null)
br.close();
}
改为try-with-resources的代码
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
return br.readLine();
}
问题2:Define and throw a dedicated exception instead of using a generic one.
定义并抛出一个专用的异常来代替一个通用的异常,大意是说不要直接抛Error,RuntimeException/Throwable/Exception这样的通用的异常。
例:
throws Exception 通用异常 改为 throws IOException 专用异常
问题3:Make this"public static XXX" field final
如果你将这个变量设置为public访问方式,同时又是静态Static方式,就要考虑将它设置为final了,因为这个是共享变量,其它类可以随时随地将它设置为别的值。所以如果是只是当前类使用,可以考虑将公开访问方式改为私有。
例:
public static String a=""; 改为
private static String a=""; 或 public static final String a="";
问题4:String literals should not be duplicated.
字符串不应该重复,如果多次用到同一字符串,建议将该字符串定义为字符串常量,再引用。
例:
URLEncoder.encode(JSON.toJSONString(map), "UTF-8");
改为
URLEncoder.encode(JSON.toJSONString(map), StandardCharsets.UTF_8.name());
问题5:@RequestMapping methods should specify HTTP method.
@RequestMapping应该显式的指定HTTP请求的类型.如@GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping。
例:
@RequestMapping(value=URL) 改为 @PostMapping(value=URL)