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

Duncan Jones commented on LANG-1039:
------------------------------------

Could you describe your use case in more detail? As I've explained, our 
expectation is for this method to be used to help you override 
{{Object.hashCode()}} when creating your own class. Consequently, we were not 
expecting to be passed an array as an argument.

It would be helpful to understand how you are trying to use it, so we can 
better decide if this is a use case we want to support. If it is, we can look 
at altering the class behaviour. If it's not, then we can look to improve the 
Javadocs to avoid similar confusion in the future.

> HashCodeBuilder.reflectionHashCode(Object object) returns always the same 
> result for any array
> ----------------------------------------------------------------------------------------------
>
>                 Key: LANG-1039
>                 URL: https://issues.apache.org/jira/browse/LANG-1039
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.builder.*
>    Affects Versions: 3.3.2
>         Environment: Windows 7, Java 6
>            Reporter: Bartosz Paszkowski
>
> HashCodeBuilder.reflectionHashCode(Object object) returns always the same 
> result for any array. The result is 17.
> There is no information in javadoc, that this method works in that way.
> The same situation in previous versions.
> *Example:*
> {code}
> public class HashCodeBuilderTest {
>     
>     public static void main(String[] args) {
>         
>         System.out.println(HashCodeBuilder.reflectionHashCode(new double[] 
> {1, 1}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new double[] 
> {2, 2}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new int[] {3, 
> 3}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new int[] {4, 
> 4}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new Long[] {5L, 
> 5L}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new Double[] 
> {null, null}));
>         System.out.println(HashCodeBuilder.reflectionHashCode(new Object[] 
> {Boolean.FALSE, 1L, null}));
>         
>     }
> }
> {code}
> *Output:*
> {code}
> 17
> 17
> 17
> 17
> 17
> 17
> 17
> {code}
> *Fix example 1*
> First check if argument obj in HashCodeBuilder.reflectionHashCode(Object obj) 
> is an array and than use java.util.Arrays.hashCode(Object[] array)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to