11// arrays.sandbox-hint — Array Utility Patterns
2- // Replaces verbose array patterns with more efficient alternatives
2+ // Replaces verbose array patterns with more efficient alternatives where this is
3+ // safe without type bindings.
34
45<!id: arrays>
56<!description: Array utility patterns and modernization>
67<!severity: info>
78<!minJavaVersion: 8>
89<!tags: arrays, modernization>
910
10- // Arrays.asList($arr).stream() → Arrays.stream($arr)
11+ @id: arrays.aslist-stream.to-arrays-stream
12+ @severity: info
1113java.util.Arrays.asList($arr).stream() :: sourceVersionGE(8)
1214=> java.util.Arrays.stream($arr)
1315;;
1416
15- // Hint-only: Arrays.asList for contains check
16- "Consider using Arrays.stream($arr).anyMatch() instead of Arrays.asList().contains()":
17+ @id: arrays.aslist-contains.review
18+ @severity: info
19+ "Consider Arrays.stream($arr).anyMatch(...) instead of Arrays.asList($arr).contains(...) when this is an array membership check.":
1720java.util.Arrays.asList($arr).contains($x) :: sourceVersionGE(8)
1821;;
1922
20- // Hint-only: arr.clone() could use Arrays.copyOf
21- "Consider using Arrays.copyOf($arr, $arr.length) instead of clone()":
23+ @id: arrays.clone.review
24+ @severity: info
25+ "Consider Arrays.copyOf($arr, $arr.length) instead of clone() when a typed copy is clearer.":
2226$arr.clone()
2327;;
2428
25- // Hint-only: System.arraycopy could use Arrays.copyOf when applicable
26- "Consider using Arrays.copyOf() instead of System.arraycopy() for full-array copies":
29+ @id: arrays.arraycopy-full-copy.review
30+ @severity: info
31+ "Consider Arrays.copyOf() instead of System.arraycopy() for simple full-array copies.":
2732System.arraycopy($src, 0, $dst, 0, $src.length)
2833;;
2934
30- @id: arrays.compare.object-equals-to-arrays-equals
31- @severity: warning
32- java.util.Objects.equals($array1, $array2)
33- :: instanceof($array1, "java.lang.Object[]") && instanceof($array2, "java.lang.Object[]")
34- => java.util.Arrays.equals($array1, $array2)
35- ;;
35+ // Do not add Objects.equals(array1, array2) -> Arrays.equals(array1, array2)
36+ // here without reliable type bindings. With binding-less mining, an array type
37+ // guard currently cannot distinguish Object[] from ordinary objects, producing
38+ // false positives for normal equals implementations.
0 commit comments