在使用代码扫描工具之后,发现了代码
obj.andIn("id", Arrays.asList(arr));
此处提示有BUG,BUG信息为:
Bug: int[] passed to varargs method java.util.Arrays.asList(Object[]) in com.vs.api.impl.VsMpExaminationPaperServiceImpl.changePublish(Integer, Integer)
This code passes a primitive array to a function that takes a variable number of object arguments. This creates an array of length one to hold the primitive array and passes it to the function.
Rank: Scary (7), confidence: High
Pattern: VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG
Type: VA, Category: CORRECTNESS (Correctness)
深入了解之后才发现:
使用 new ArrayList<>(Arrays.asList(arr))方式,Arrays.asList()的输出值会传递给ArrayList的构造器,那么会创建一个引用arr数组内元素的ArrayList,因此打乱的结果不会同步到arr数组去。如果直接使用Arrays.asList(arr)的结果,则结果会同步到arr数组。导致arr数组内元素也会被打乱。