You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2023/10/05 12:23:00 UTC

[jira] [Commented] (LANG-1713) ArrayUtils will return null when adding two null arrays, but undocumented

    [ https://issues.apache.org/jira/browse/LANG-1713?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17772193#comment-17772193 ] 

Gary D. Gregory commented on LANG-1713:
---------------------------------------

Hi [~john16384] 

I take this applies to add {{addAll()}} methods?

> ArrayUtils will return null when adding two null arrays, but undocumented
> -------------------------------------------------------------------------
>
>                 Key: LANG-1713
>                 URL: https://issues.apache.org/jira/browse/LANG-1713
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.*
>    Affects Versions: 3.13.0
>            Reporter: John Hendrikx
>            Priority: Minor
>              Labels: Null-Safety, null
>
>  
> {color:#000000}The code below makes use of `clone`; however `clone` will return `null` when the array is null.{color}
>  
> {color:#000000}This means that doing ArrayUtils.addAll(null, null) can return null.  The documentation however makes it appear that this can never happen ("it is always a new array", and "@return The new boolean[] array."){color}
>  
>  
> {color:#3f5fbf}/**{color}
> {color:#3f5fbf} * {color}{color:#7f7f9f}<p>{color}{color:#3f5fbf}Adds all the elements of the given arrays into a new array.{color}
> {color:#3f5fbf} * {color}{color:#7f7f9f}<p>{color}{color:#3f5fbf}The new array contains all of the element of \{@code array1} followed{color}
> {color:#3f5fbf} * by all of the elements \{@code array2}. When an array is returned, it is always{color}
> {color:#3f5fbf} * a new array.{color}
> {color:#3f5fbf} *{color}
> {color:#3f5fbf} * {color}{color:#7f7f9f}<pre>{color}
> {color:#3f5fbf} * ArrayUtils.addAll(array1, null) = cloned copy of array1{color}
> {color:#3f5fbf} * ArrayUtils.addAll(null, array2) = cloned copy of array2{color}
> {color:#3f5fbf} * ArrayUtils.addAll([], []) = []{color}
> {color:#3f5fbf} * {color}{color:#7f7f9f}</pre>{color}
> {color:#3f5fbf} *{color}
> {color:#3f5fbf} * {color}{color:#7f9fbf}@param{color}{color:#3f5fbf} array1 the first array whose elements are added to the new array.{color}
> {color:#3f5fbf} * {color}{color:#7f9fbf}@param{color}{color:#3f5fbf} array2 the second array whose elements are added to the new array.{color}
> {color:#3f5fbf} * {color}{color:#7f9fbf}@return{color}{color:#3f5fbf} The new boolean[] array.{color}
> {color:#3f5fbf} * {color}{color:#7f9fbf}@since{color}{color:#3f5fbf} 2.1{color}
> {color:#3f5fbf} */{color}
> {color:#000080}public{color}{color:#000000} {color}{color:#000080}static{color}{color:#000000} {color}{color:#000080}boolean{color}{color:#000000}[] {color}{color:#000000}addAll{color}{color:#000000}({color}{color:#000080}final{color}{color:#000000} {color}{color:#000080}boolean{color}{color:#000000}[] {color}{color:#6a3e3e}array1{color}{color:#000000}, {color}{color:#000080}final{color}{color:#000000} {color}{color:#000080}boolean{color}{color:#000000}... {color}{color:#6a3e3e}array2{color}{color:#000000}) {{color}
> {color:#000080}if{color}{color:#000000} ({color}{color:#6a3e3e}array1{color}{color:#000000} == {color}{color:#000080}null{color}{color:#000000}) {{color}
> {color:#7f0055}return{color}{color:#000000} {color}{color:#000000}clone{color}{color:#000000}({color}{color:#6a3e3e}array2{color}{color:#000000});{color}
> {color:#000000} } {color}{color:#000080}else{color}{color:#000000} {color}{color:#000080}if{color}{color:#000000} ({color}{color:#6a3e3e}array2{color}{color:#000000} == {color}{color:#000080}null{color}{color:#000000}) {{color}
> {color:#7f0055}return{color}{color:#000000} {color}{color:#000000}clone{color}{color:#000000}({color}{color:#6a3e3e}array1{color}{color:#000000});{color}
> {color:#000000} }{color}
> {color:#000080}final{color}{color:#000000} {color}{color:#000080}boolean{color}{color:#000000}[] {color}{color:#6a3e3e}joinedArray{color}{color:#000000} = {color}{color:#000080}new{color}{color:#000000} {color}{color:#000080}boolean{color}{color:#000000}[{color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000} + {color}{color:#6a3e3e}array2{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000}];{color}
> {color:#000000} System.{color}{color:#000000}arraycopy{color}{color:#000000}({color}{color:#6a3e3e}array1{color}{color:#000000}, 0, {color}{color:#6a3e3e}joinedArray{color}{color:#000000}, 0, {color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000});{color}
> {color:#000000} System.{color}{color:#000000}arraycopy{color}{color:#000000}({color}{color:#6a3e3e}array2{color}{color:#000000}, 0, {color}{color:#6a3e3e}joinedArray{color}{color:#000000}, {color}{color:#6a3e3e}array1{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000}, {color}{color:#6a3e3e}array2{color}{color:#000000}.{color}{color:#0000c0}length{color}{color:#000000});{color}
> {color:#7f0055}return{color}{color:#000000} {color}{color:#6a3e3e}joinedArray{color}{color:#000000};{color}
> {color:#000000} }{color}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)