[
https://issues.apache.org/jira/browse/LANG-1039?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14149284#comment-14149284
]
Piotr Kaczmarski edited comment on LANG-1039 at 9/26/14 3:27 PM:
-----------------------------------------------------------------
There is no such use case.
We've only found a bug in this method, that is all.
So we are telling you about it to be helpful and to improve your library.
If you say:
{quote}
Consequently, we were not expecting to be passed an array as an argument.
{quote}
than you must allways remember, that your code should be idiot-proof.
You cannot simply expect, that your code will be used according to your guides
- you have to enforce this.
I'm sure you will come up with some good solution.
Good luck.
was (Author: halfdan):
There is no such use case.
We've only found a bug in this method, that is all.
So we are telling you about it to be helpful and improve your library.
If you say:
{quote}
Consequently, we were not expecting to be passed an array as an argument.
{qoute}
> 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)